as3 updateAfterEvent的作用

flash中一共有三個類具有該屬性,這三個類分別是:KeyboardEvent,MouseEvent,TimerEvent。調用updateAfterEvent 屬性的事件,可強制立即執行呈現操作,而不是等到呈現階段。但是,如果 updateAfterEvent 頻繁導致性能問題,應避免使用它。


1.updateAfterEvent怎麼用?
有很多人做鼠標追隨效果的時候,總是發現鼠標移動不流暢,不知該如何解決。
其實方法很簡單,你只需要加上一句updateAfterEvent()就ok了。

 

2.先來看看幫助中是怎麼解釋as3的updateAfterEvent的:
在 onClipEvent() 處理函數內調用updateAfterEvent函數時,或將其作爲傳遞給 setInterval() 的函數或方法的一部分進行調用時,將更新顯示(與爲影片設置的每秒幀數無關)。如果對 updateAfterEvent 的調用不在 onClipEvent() 處理函數內,也不是傳遞給 setInterval() 的函數或方法的一部分,則 Flash 將忽略該調用。此函數只對某些 Mouse 和 MovieClip 處理函數起作用:Mouse 類的 mouseDown、mouseUp、mouseMove、keyDown 和 keyUp 處理函數;MovieClip 類的 onMouseMove、onMouseDown、onMouseUp、onKeyDown 和 onKeyUp 處理函數。它對 Key 類不起作用。

 

3.其實說到底updateAfterEvent的作用就是使光標移動看起來更加順暢。

下面是updateAfterEvent的例子,目的讓大家更方便的理解它的作用。
當鼠標移到舞臺左面的“有執行updateAfterEvent”的區域時,鼠標移動將流暢,而當鼠標移動到舞臺右面的“無執行updateAfterEvent”的區域時,鼠標移動較會有間斷,不流暢。

看看as:

//使用 updateAfterEvent() 繼續刷新舞臺以使光標的移動看起來順暢。 


package
{
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.MouseEvent;

public class TUpdateEvent extends Sprite
{
[Embed(source="assets/TT2.jpg")]
private var img:Class;

private var bmp:Bitmap;
public function TUpdateEvent()
{
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;


bmp = new img() as Bitmap;
addChild(bmp);

stage.addEventListener(MouseEvent.MOUSE_MOVE , stageMouseMove);
}

private function stageMouseMove(evt:MouseEvent):void
{
bmp.x = this.mouseX;
bmp.y = this.mouseY;

evt.updateAfterEvent();
}
}
}


從上面的例子可以看出來,調用updateAfterEvent()函數與不調用該函數視覺上的效果是不一樣的,調用了會感覺很平滑,不調用會有閃爍的感覺

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章