Мне бы хотелось иметь несколько объектов (например, 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 методов! Есть ли способ написать статический метод, чтобы я мог использовать для всех объектов?
И я понял, что объект движется вверх и вниз слишком быстро. Если вы попытаетесь навести указатель мыши на нижний конец объекта, вы увидите, что он очень быстро подпрыгивает. Есть ли способ, которым я могу контролировать скорость объекта?
Я хотел иметь несколько объектов, в которых пользователь может навести курсор мыши и обнаружить сокровище под ним. Пользователь может нажать на сокровище, а также. Я получил эту идею из игры. Объект вернется в то же положение после того, как пользователь уберет мышь. Если объект движется слишком быстро, пользователь не может нажать на сокровище внутри. Есть идеи, как решить проблему с движением?
Обновлено
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;
}
Выше мой обновленный код, я попробовал предложение Ричарда, но казалось, что объекты движутся вверх и вниз вне моего контроля.