2012-09-10 40 views
1

在flash as3中製作自定義光標,我用掃帚杆(簡單矢量動畫片段)替換了光標。該代碼是下面的標準定義光標的代碼:Laggy自定義光標是Flash

private function listeners():void { 
    this.addEventListener(MouseEvent.MOUSE_MOVE, attachBroom); 
} 

private function attachBroom(e:MouseEvent):void 
{ 
    broomStick.x = e.stageX - 10; 
    broomStick.y = e.stageY - 5; 
    e.updateAfterEvent(); 
} 

SWF可以發現here。光標在實際煙霧報警圖形上方時很精細,但當它超出背景時,鼠標以「快速」速度移動時,光標會嚴重滯後。

回答

5

試試這個,而不是你的

private function listeners():void { 
    this.addEventListener(Event.ENTER_FRAME, attachBroom); 
} 

private function attachBroom(e:Event):void 
{ 
    broomStick.x = stage.mouseX - 10; 
    broomStick.y = stage.mouseY - 5; 
} 

的邏輯是相同的,但ENTER_FRAME事件比MOUSE_EVENTS更快。 ENTER_FRAME也沒有updataAfterEvent。

+0

也做到了,謝謝! –

+0

歡迎您:) – Moorthy

+1

爲了說明問題,ENTER_FRAME每秒運行的次數少於MOUSE_MOVE(假設您不需要手動調整幀率以獲得非常高的金額),從而減少資源負擔。話雖如此,你應該看看解釋本機遊標的答案,因爲它們在操作系統級別與鼠標集成,並且不需要任何特殊的資源霸佔事件來顯示假的鼠標光標。 –