假设我在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
而不是CLICK
或ROLL_OVER
,但它不起作用。如果我想将对象发送到第2帧(使用MOUSE_DOWN
),我需要点击其中的每一个,在这种情况下,MOUSE_DOWN
和CLICK
之间没有区别。
作为对鼠标事件不太了解的人,我想知道为什么翻转和点击有效,但是mouse_down没有?
答案 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);
}