當我添加的DisplayObject到的DisplayObjectContainer(如雪碧到雪碧)的功能,似乎的DisplayObject實際上是不是立即添加,而是在完成功能後。的addChild() - 的DisplayObject是不是立即可見
見這個例子:
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
public class AddChildTest extends Sprite {
private var _sprite:Sprite;
public function AddChildTest():void{
var button:Sprite = new Sprite();
button.graphics.beginFill(0x00ff00);
button.graphics.drawRect(0, 0, 50, 50);
button.graphics.endFill();
button.buttonMode = true;
button.addEventListener(MouseEvent.CLICK, onClick);
addChild(button);
}
private function onClick(event:MouseEvent):void {
_sprite = new Sprite();
_sprite.graphics.beginFill(0xff0000);
_sprite.graphics.drawRect(0, 0, 50, 50);
_sprite.graphics.endFill();
_sprite.x = 50;
_sprite.y = 50;
//this red sprite is not visible immediateley!
addChild(_sprite);
//put something time-consuming here
for (var i:int = 0; i < 2000; i++){
trace(i);
}
}
}
}
因此,我們有一個簡單的綠色按鈕,單擊時,有構建一個紅色雪碧並添加到舞臺上。 但實際上,直到onClick()函數已完全執行後,纔會看到紅色的Sprite。
爲什麼是這樣,我能做些什麼紅色的雪碧立即可見?
是有一些(針對開發商不可見的)全球paint()方法或更新()功能,即不執行,直到一些棧完全執行什麼的?
什麼是fps設置? – 2011-08-17 17:56:04
試試這個.invalidateDisplayList() – 2011-08-17 18:00:12
Sprite不是mx.core.UIComponent,所以這個函數在那裏不存在。 – Morrandir 2011-08-18 13:44:06