Условное заявление as3 не работает - PullRequest
1 голос
/ 24 января 2010

В моем коде здесь:

var manTimer:Timer = new Timer(1700,5);
manTimer.addEventListener(TimerEvent.TIMER, moveMan);
function moveMan(e:TimerEvent):void {
    var manX:Tween = new Tween(man, "x", Regular.easeIn, man.x, man.x - 100, 1.5, true);
}

function startMan(e:MouseEvent):void {
    manTimer.start();
    var manX:Tween = new Tween(man, "x", Regular.easeIn, man.x, man.x - 100, 1.5, true);
}

if(man.x > 589) {
paper.btnElScorcho.addEventListener(MouseEvent.CLICK, startMan);
paper.btnTheGoodLife.addEventListener(MouseEvent.CLICK, startMan);
}

Я пытаюсь сделать так, чтобы при щелчке по btnElScorcho или btnTheGoodLife мой mc "man" выходил на сцену. Он начинается с 590 пикселей и заканчивается на -10 пикселей. Эта часть работает.

Что не работает, так это мое условное утверждение, которое говорит, что он должен перемещать «человека» только в том случае, если он находится в положении х 590 или больше, потому что, когда снова нажимается одна из 2 кнопок, я не хочу вывести его, если он уже там или он уже уходит.

По какой-то причине, "человек" будет все еще двигаться, когда кнопки нажимаются во второй раз, и, как ни странно, "человек" будет двигаться только в два раза, в отличие от обычных 5 раз, установленных в функции.

Может быть, я могу изменить оператор if, чтобы проверить, была ли нажата кнопка, в отличие от того, где находится "человек"?

Спасибо, Wade

1 Ответ

0 голосов
/ 24 января 2010

Есть небольшое заблуждение. addEventListener будет регистрировать функцию обработчика навсегда, а не только на один клик. То, что вы хотите сделать, это вызвать addEventListener в начале вашей программы один раз и вместо этого проверить условие внутри функции обработчика, чтобы, если оно ложно, код обработчика пропускался.

...