多个鼠标移动检测

时间:2011-03-24 04:19:39

标签: flash actionscript-3 performance events mouseevent

多次鼠标移动检测

我想像这样与鼠标指针进行交互:http://www.youtube.com/vision2watch#p/u/38/LlHGYaP9fgM

所以基本上有2个班级;一个是Main类,另一个是image_child类。主类负责主要的交互,如加载XML加载器类,设置文本和其他东西。 image_child类负责在鼠标移动时渲染和呈现舞台上的图像以及它们的移动和交互。我有一个问题。

有两种方法可以在舞台上呈现这种互动:

方法A:

1-创建一个名为ImageBank的image_child对象Array = new 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 个答案:

答案 0 :(得分:1)

我认为最简单的解决方案是将您的事件传递到您的image_child类,从Main类鼠标移动。

因此,在您的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上,你提到过你不想这样做。

希望这有帮助。