如何在MOUSE_DOWN期间在MOUSE_OVER上选择多个对象

时间:2014-08-12 19:35:08

标签: actionscript-3 flash actionscript

假设我在for循环中创建了30个对象,添加到容器中。 对象在第1帧停止。我已经在对象中添加了事件侦听器,如下所示,当我单击容器内的任何对象时,它将转到第2帧并播放。

for (var i:int=0; i < 30; i++)
{
    var object = new Object1();
    object.gotoAndStop(1);
    object.addEventListener(MouseEvent.CLICK, myFunction);
    container.addChild(object);
}

private function myFunction(e:MouseEvent):void
{
    e.currentTarget.gotoAndPlay(2);
}

所以我必须点击每个对象才能在第2帧发送它, 我也试过ROLL_OVER,一切都一样,但CLICK在for循环中更改为ROLL_OVER

我想要的是单击,然后将鼠标悬停在对象上,使它们转到第2帧并播放。

问题是我需要使用MOUSE_DOWN事件,我尝试设置MOUSE_DOWN而不是CLICKROLL_OVER,但它不起作用。如果我想将对象发送到第2帧(使用MOUSE_DOWN),我需要点击其中的每一个,在这种情况下,MOUSE_DOWNCLICK之间没有区别。

作为对鼠标事件不太了解的人,我想知道为什么翻转和点击有效,但是mouse_down没有?

1 个答案:

答案 0 :(得分:1)

我想我已经看到了你要做的事情......你想按下鼠标开始画一堆精灵,当你将鼠标放在它上面时,每个精灵都会进入第二帧,但只有当按下鼠标按钮,对吧?

尝试这样的事情

container.addEventListener(MouseEvent.MOUSE_DOWN, setMouseDown);
container.addEventListener(MouseEvent.MOUSE_UP, setMouseUp);
private var mouseIsDown:Boolean = false;
private var currentSprite:Sprite;

for (var i:int=0; i < 30; i++)
{
    var object = new Object1();
    object.gotoAndStop(1);
    object.addEventListener(MouseEvent.MOUSE_OVER, myFunction);
    object.mouseChildren = false;
    container.addChild(object);
}

private function setMouseDown(e:MouseEvent){
    mouseIsDown = true;
    setActive(currentSprite);
}

private function setMouseUp(e:MouseEvent){
    mouseIsDown = false;
}

private function myFunction(e:MouseEvent){
    currentSprite = e.target;
    if(mouseIsDown){
        setActive(currentSprite);
    }
}

private function setActive(target:Sprite){
    target.gotoAndPlay(2);
}