2014-12-06 65 views
0

我想用0.1透明度清除精靈,但sprite.graphics.clear()沒有這個選項。每幀需要不斷清除。我怎樣才能做到這一點?我嘗試用透明度爲0.1的整個舞臺上的填充矩形,但我的遊戲正在減慢每一幀。Actionscript 3 sprite clear with alpha

+0

你想做'sprite.alpha = 0.1'? – akmozo 2014-12-07 02:23:52

+0

我的藍色精靈畫在新位置上的每一幀,但前提不刪除。我想在整個屏幕上繪製白色的矩形,以便所有的前景精靈都有0.1個以上的阿爾法,所以每個新的精靈都有更大的阿爾法和精靈,我先畫的是最小的阿爾法。所以如果我在屏幕上隨機抽取10個藍色精靈,1st的Alpha應該是0(不可見),0.9秒,0.8等等。 – Dominik 2014-12-07 13:23:34

+0

我不明白你在找什麼,但是爲什麼每次你想繪製都不使用'sprite.graphics.clear()'?你也可以使用'removeChild(sprite)'。 – akmozo 2014-12-07 16:14:19

回答

0

也許你應該把所有的精靈放到一個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 
    } 
+0

謝謝,這幫助了我! – Dominik 2014-12-11 21:50:42