2011-03-24 58 views
0

多個鼠標移動檢測多個鼠標移動檢測

我想使鼠標指針像這樣的互動:http://www.youtube.com/vision2watch#p/u/38/LlHGYaP9fgM

所以基本上有2班;一個是Main類,另一個是image_child類。主類負責主要的交互,如加載XML加載器類,設置文本和其他東西。 image_child類負責在鼠標移動時在舞臺上呈現和呈現圖像以及它們的移動和交互。我有個問題。

有兩種方法來呈現在舞臺上的這種相互作用:

方法A:

1-請image_child對象的數組稱爲ImageBank陣列=新的Array()。

2-每個孩子都有一個「.cordinator(x,y)」函數,我可以調用它並將鼠標x和y發送給該類。 .i.e ImageBank[i].cordinator(120,144);

3-將數組置於Main類中的「For」或「While」循環中,給鼠標x和y並將交互渲染爲舞臺;並在每次有新的協調鼠標移動時重做循環。

/// 120 is mouse x and 144 is mouse y 

for (var i:int = 0; i< ImageBank.length; i++) { 

    ImageBank[i].cordinator(120,144); 

} 

方法B:

1-收件檢測鼠標移動每個image_child對象內的鼠標移動事件偵聽器。

2-從該事件中獲取鼠標x和y。

3-渲染的相互作用階段(每個image_child實例內)

似乎方法B是更容易和乾淨方法B的每個實例具有鼠標移動事件偵聽器和,如果我有70個實例,然後我有70個鼠標移動事件監聽器,我認爲它根本不是一件好事。

你有什麼想法或建議嗎? (我正在尋找最佳性能和流暢的運動。)

回答

1

我認爲最簡單的解決方案是將您的事件傳遞到您的image_child類,從Main類的鼠標移動。

所以,在你的主類,你可以有你的聽衆做這樣的事情:

private function listenerName(evt:MouseEvent):void  
{ 
    for(var i=0; i<imgChildContainer.numChildren-1; i++) 
    { 
     var mc:MovieClip = imgChildContainer.getChildAt(i); 
     mc.mouseMove(Yourcoordinateshere/Whatever); 
    } 
} 

This assumes your image_childs are in a container.

除此之外,我會把聽衆的image_child,你提到你不想這樣做。

希望這會有所幫助。