2011-03-24 80 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,你提到你不想这样做。

希望这会有所帮助。