Изменить переменную при событии мыши - PullRequest
0 голосов
/ 30 августа 2011

Я пытаюсь изменить переменную, которая установлена ​​в 0 на 1 при событии мыши. У меня есть 3 мувиклипа «maskedbgmc», и при щелчке по нему предполагается изменить переменную Но это не меняет переменную, насколько я вижу. Что я скучаю?

Спасибо за ваше время:)

var checkCard1:Number = 0;

maskedbg_mc.addEventListener(MouseEvent.MOUSE_DOWN, cardChecked1);
function cardChecked1 (event:MouseEvent):void {
    checkCard1 = 1;
}

var checkCard2:Number = 0;

maskedbg_mc2.addEventListener(MouseEvent.MOUSE_DOWN, cardChecked2);
function cardChecked2 (event:MouseEvent):void {
    checkCard2 = 1;
}

var checkCard3:Number = 0;

maskedbg_mc3.addEventListener(MouseEvent.MOUSE_DOWN, cardChecked3);
function cardChecked3 (event:MouseEvent):void {
    checkCard3 = 1;
}

if(checkCard1 == 1) {
  trace('Nice!');
}
else if(checkCard2 == 1) {
  trace('Better!');
}
else if(checkCard3 == 1) {
  trace('King!');
}

Ответы [ 3 ]

1 голос
/ 30 августа 2011

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

Может быть, вы хотите добавить свои операторы if в функцию, например так:

function checkCards() : void {
    if(checkCard1 == 1) {
      trace('Nice!');
    }
    else if(checkCard2 == 1) {
      trace('Better!');
    }
    else if(checkCard3 == 1) {
      trace('King!');
    }
}

Затем вы можете вызвать этот метод в ваших прослушивателях событий, и он проверит переменные карты, используя вышеуказанную логику. Пример этого используется внутри метода cardChecked3 ():

maskedbg_mc3.addEventListener(MouseEvent.MOUSE_DOWN, cardChecked3);
function cardChecked3 (event:MouseEvent):void {
    checkCard3 = 1;
    checkCards();
}

Надеюсь, это поможет.

0 голосов
/ 30 августа 2011

Попробуйте изменить код на последнюю часть

function cardChecked3 (event:MouseEvent):void { 
    checkCard3 = 1; 

    if(checkCard1 == 1) { 
      trace('Nice!'); 
    } 
    else if(checkCard2 == 1) { 
      trace('Better!'); 
    } 
    else if(checkCard3 == 1) { 
      trace('King!'); 
    } 
} 
0 голосов
/ 30 августа 2011

Должно ли событие быть MouseEvent.MOUSE_DOWN?Если вас интересуют только клики, я бы попытался изменить это на MouseEvent.CLICK.

Просто мысль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...