Я хотел бы сделать следующее: Имейте несколько объектов (например, 20 из них), каждый раз, когда я курсирую над любым из них, он перемещается вверх и каждый раз, когда моя мышь уходит, он перемещается вниз.Как использовать статическую функцию в ActionScript 3.0?
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 методов! Есть ли способ написать статический метод, чтобы я мог использовать для всех объектов?
И я понял, что объект движется вверх и вниз слишком быстро. Если вы попытаетесь поместить ur-мышь в нижнюю часть obj, u увидите, что она очень быстро подпрыгивает. Есть ли способ управлять скоростью объекта?
Я хотел иметь несколько объектов, в которых пользователь может навести курсор мыши и обнаружить сокровища под ним, ха-ха. Пользователь также может нажать на сокровище. Я получил эту идею из игры. Объект будет опускаться до той же позиции после того, как пользователь отпустит мышь. Если 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;
}
выше мой обновленный код, я попробовал предложение Ричарда, но он, казалось, как OBJS ¨R двигаться вверх п вниз из мой контроль :(
Это может быть позиционирование вашего слоя слежения. Попробуйте изменить MOUSE_OVER для прослушивания элемента отслеживания, а не «obj». –
Я следовал за предложенным предложением и, похоже, сейчас работает. Я также переместил слой отслеживания перед объектами. Спасибо! – yeeen
Хотя моя проблема решена сейчас, я по-прежнему приветствую обсуждение. Я многому научился из всех ваших идей вместе :) – yeeen