2011-08-30 152 views
0

我試圖將在鼠標事件中設置爲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!'); 
} 

回答

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(); 
} 

希望這有助於。

+0

非常感謝!這當然使我朝着正確的方向前進。 :d – Chris

0

事件是否有成爲的MouseEvent.MOUSE_DOWN?如果您只對點擊感興趣,我會嘗試將其更改爲MouseEvent.CLICK。

只是一個想法。

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!'); 
    } 
}