我想要一些对象(例如其中的 20 个),每次我将鼠标悬停在其中任何一个上时,它都会向上移动,而每次鼠标离开时,它都会向下移动。
obj1.addEventListener(MouseEvent.MOUSE_OVER, moveMyself1);
obj1.addEventListener(MouseEvent.MOUSE_OUT, moveMyself2);
obj2.addEventListener(MouseEvent.MOUSE_OVER, moveMyself1);
obj2.addEventListener(MouseEvent.MOUSE_OUT, moveMyself2);
obj3.addEventListener(MouseEvent.MOUSE_OVER, moveMyself1);
obj3.addEventListener(MouseEvent.MOUSE_OUT, moveMyself2);
obj4.addEventListener(MouseEvent.MOUSE_OVER, moveMyself1);
obj4.addEventListener(MouseEvent.MOUSE_OUT, moveMyself2);
obj5.addEventListener(MouseEvent.MOUSE_OVER, moveMyself1);
obj5.addEventListener(MouseEvent.MOUSE_OUT, moveMyself2);
//and etc...
function moveMyself1(e:MouseEvent):void{
obj1.y -= 30;
}
function moveMyself2(e:MouseEvent):void{
obj1.y += 30;
}
我不想为每个对象添加一个事件侦听器,那么我将有 40 个方法!有没有办法编写一个静态方法,以便我可以用于所有对象?
我意识到 obj 上下移动太快了。如果您尝试将鼠标放在 obj 的底端,您会看到它非常快速地向上跳跃。有什么办法可以控制obj的速度吗?
我想要一些对象,用户可以将鼠标悬停在其中并发现下面的宝藏。用户也可以点击宝藏。我从一个游戏中得到了这个想法。用户将鼠标移开后,对象将回落到相同的位置。如果物体移动得太快,用户将无法点击里面的宝藏。关于如何解决运动问题的任何想法?
更新
var elements : Array = new Array();
var elements2 : Array = new Array();
for (var i:int = 1; i <= 5; i++) {
elements[i] = this['obj' + i];
elements2[i] = this['tracking' + i];
}
for each(var element_1 : IEventDispatcher in elements){
element_1.addEventListener(MouseEvent.MOUSE_OVER, moveUp);
}
for each(var element_2 : IEventDispatcher in elements2){
element_2.addEventListener(MouseEvent.MOUSE_OUT, moveDown);
}
function moveUp(e:MouseEvent):void{
e.currentTarget.y -= 30;
}
function moveDown(e:MouseEvent):void{
elements[elements2.indexOf(e.currentTarget)].y += 30;
}
以上是我更新的代码,我尝试了 Richard 的建议,但似乎对象上下移动超出了我的控制。