在鼠标事件上更改变量

时间:2011-08-30 18:30:21

标签: actionscript-3

我正在尝试将鼠标事件中设置为0的变量更改为1。 我有3个电影剪辑'maskedbg​​mc',当点击它应该改变一个变量。 但就我所见,它并没有改变变量。我错过了什么?

感谢您的时间:)

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 个答案:

答案 0 :(得分:1)

请注意,事件是异步发生的。这意味着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();
}

希望这有帮助。

答案 1 :(得分:0)

事件必须是MouseEvent.MOUSE_DOWN吗?如果您只对点击感兴趣,我会尝试将其更改为MouseEvent.CLICK。

只是一个想法。

答案 2 :(得分:0)

尝试将代码更改为最后一部分

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

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