0
我想用0.1透明度清除精靈,但sprite.graphics.clear()沒有這個選項。每幀需要不斷清除。我怎樣才能做到這一點?我嘗試用透明度爲0.1的整個舞臺上的填充矩形,但我的遊戲正在減慢每一幀。Actionscript 3 sprite clear with alpha
我想用0.1透明度清除精靈,但sprite.graphics.clear()沒有這個選項。每幀需要不斷清除。我怎樣才能做到這一點?我嘗試用透明度爲0.1的整個舞臺上的填充矩形,但我的遊戲正在減慢每一幀。Actionscript 3 sprite clear with alpha
也許你應該把所有的精靈放到一個Vector中,當你需要的時候你可以手動去除它們。
private var vec:Vector.<Sprite> = new Vector.<Sprite>();
private function update():void
{
// reduce the alpha of all other sprites
// check all other sprites from the newest to the oldest (so we can make a splice without getting an index error in case of there is other sprites to remove)
for(var i:int = this.vec.length -1; i >= 0; i--)
{
this.vec[i].alpha -= 0.1;
if(this.vec[i].alpha == 0)
{
if(this.contains(this.vec[i]))
{
this.removeChild(this.vec[i]);
}
// we clear the sprite so it doesn't use any memory
this.vec[i].graphics.clear();
// remove the sprite from the vector
this.vec.splice(i,1);
}
}
// create and draw the new sprite you want to add
var addingSprite:Sprite = new Sprite();
addingSprite.graphics.beginFill(0x005500);
addingSprite.graphics.drawCircle(0, 0, 10);
this.addChild(addingSprite); // add the sprite to the stage
this.vec.push(addingSprite); // add the sprite to the vector so you can reduce his alpha easily
}
謝謝,這幫助了我! – Dominik 2014-12-11 21:50:42
你想做'sprite.alpha = 0.1'? – akmozo 2014-12-07 02:23:52
我的藍色精靈畫在新位置上的每一幀,但前提不刪除。我想在整個屏幕上繪製白色的矩形,以便所有的前景精靈都有0.1個以上的阿爾法,所以每個新的精靈都有更大的阿爾法和精靈,我先畫的是最小的阿爾法。所以如果我在屏幕上隨機抽取10個藍色精靈,1st的Alpha應該是0(不可見),0.9秒,0.8等等。 – Dominik 2014-12-07 13:23:34
我不明白你在找什麼,但是爲什麼每次你想繪製都不使用'sprite.graphics.clear()'?你也可以使用'removeChild(sprite)'。 – akmozo 2014-12-07 16:14:19