2015-05-07 2 views
1

Мне нужно нарисовать independentet прямоугольники для спрайта. Но перекрывающихся области получат видно, если я применяю альфа к моему спрайту (спрайт будет исчезать в и):As3: Нарисуйте перекрывающиеся прямоугольники до спрайта и примените alpha

 var spBox:Sprite = new Sprite(); 
     this.addChild(spBox); 

     spBox.graphics.beginFill(0x123456) 
     spBox.graphics.drawRect(100, 100, 50, 50); 
     spBox.graphics.endFill(); 

     spBox.graphics.beginFill(0x123456) 
     spBox.graphics.drawRect(125, 125, 50, 50); 
     spBox.graphics.endFill(); 

Sprite rectangles with alpha applied

Есть ли способ compine/расплющить/merge прямоугольники моего спрайта? Я хочу создать бесшовную аплоа.

ответ

1

Я подозреваю, что графический объект не поддерживает такую ​​функциональность для частей своих данных.

Если оба коробок индивидуальны DisplayObjects, вы можете установить .blendMode в DisplayObjectContainer к BlendMode.LAYER,, который дает желаемый результат. Вот пример кода, который refactors рисунок прямоугольника в Box класс:

var spBox:Sprite = new Sprite(); 
this.addChild(spBox); 


var a:Box = new Box(50, 50, 0x123456); 
a.x = a.y = 100; 
spBox.addChild(a); 

var b:Box = new Box(50, 50, 0x123456); 
b.x = b.y = 125; 
spBox.addChild(b);  

spBox.alpha = .5; 
spBox.blendMode = BlendMode.LAYER; 

Соответствующие части Box класса выглядят следующим образом:

public class Box extends Shape 
{ 
    public function Box(width:Number = 100, height:Number = 100, color:uint = 0) 
    { 
     graphics.beginFill(color) 
     graphics.drawRect(0, 0, width, height); 
     graphics.endFill(); 
    } 
} 
+0

BlendMode.LAYER делает трюк! Спасибо. – Ilyssis