2013-09-27 90 views
0

我今天想要解決的問題與大多數問題不同。我想讓應用程序更快地執行處理程序,以便在UI中看不到任何滯後。AS3&Flex:優化事件監聽器

我有一個類,其中包含一個TextInput和生成的虛線,由一系列線組成。這個組件,我們稱之爲CardTextInput,監聽父狀態更改。如果鼠標在該區域上方,則會顯示虛線,否則將隱藏。

如果只有一個CardTextInput實例,如果我添加10,當鼠標移過它需要0.5秒來顯示虛線,而不是隻有一個,並立即顯示時,一切正常。

我該如何優化這種情況?

+1

這很難告訴別人如何優化他們的代碼沒有看到任何代碼。 –

+1

'由一系列線組成':假設你指的是許多Line的實例,請嘗試使用Path的一個實例。可以加快渲染速度。無論如何,如果只有10個,事件聽衆並不是你的瓶頸。但是 - 作爲@SunilD。指出 - 如果你不分享任何代碼,就不可能更精確。 – RIAstar

回答

2

假設您在父myCanvas中添加了10個CardTextInput。

嘗試將CardTextInput'mouseEnabled和mouseChildren設置爲false

然後在myCanvas添加MouseMove事件監聽器

myCanvas.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); 

for each (var child:DisplayObject in myCanvas) { 
    child.dashLines.mouseEnabled = false; 
    child.dashLines.mouseChildren = false; 
} 

protected function onMouseMove(event:MouseEvent):void { 

    for each (var child:DisplayObject in myCanvas) { 
     child.dashLines.visible = false; 
    } 

    for each (child in myCanvas) { 

     if (child.hitTestPoint(event.stageX, event.stageY)) { 
      child.dashLines,visible = true; 
      break; 
     } 
    } 
} 
+0

好吧,我用'includeIn'在不同的狀態下顯示虛線,現在我將它改爲在該狀態下可見,並且一切都更快。這改善了它:) – Andrew

+0

我不知道如何includeIn作品,但我想它可能會導致關於位置或別的東西的計算。較少的鼠標事件監聽器可以使性能更好。 – Pan

+0

這是你的答案在這裏。你可以做的第一件事就是同時優化許多對象的鼠標處理程序。 – drkstr1