我正在尝试将鼠标事件中设置为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!');
}
答案 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!');
}
}