2011-12-13 64 views
0

我目前工作的一個賭場遊戲(我校),但我遇到了一個問題:獲得一個Int在另一幀的ActionScript 3.0

var a:int //this part is in frame 1 

a = 10000 
money.text = ""+a //this part is working 


//this part is in another frame 
lost_BTN.addEventListener(MouseEvent.CLICK, lost) 

function lost (e:MouseEvent) 
{ 
cash.text = ""+a -=50 //*1 (please see below) 
} 
*1) Scene 1, Layer 'Layer 1', Frame 6, Line 36 1050: Cannot assign to a non-reference value. 

*1) Scene 1, Layer 'Layer 1', Frame 6, Line 36 1067: Implicit coercion of a value of type String to an unrelated type Number. 

*1) Scene 1, Layer 'Layer 1', Frame 6, Line 36 1067: Implicit coercion of a value of type Number to an unrelated type String. 

我不能似乎得到的信息在另一個框架中出現'a'。

+0

賭場遊戲的學校?您是否必須在考試中使用太陽鏡?:) – HRgiger 2011-12-13 21:38:00

+0

我認爲這部分是錯誤的:cash.text =「」+ a - = 50也許您想要的是:cash.text =「」+(a -50) – SERPRO 2011-12-13 21:41:32

回答

0

這是因爲你在第6幀中用a做了一些計算,你想放置文本。你應該告訴Flash,a -= 50應該被解釋爲String,你會很開心。如果你改變你的代碼這一點,它會工作:

function lost (e:MouseEvent) 
{ 
    cash.text = String(a -=50); 
} 
+0

啊! !這似乎成功了。非常感謝。我會記得那個! – PlayerX 2011-12-13 22:34:51

0

由於@rvmook提到了他的答案和@SeRPRo的評論。您的錯誤是關於operator precedence。也就是說,操作的順序正在發生。在你的例子中,在a的預期減法分配50之前,增加了空字符串和值a。結果是,您試圖從包含值爲a的字符串表示形式的字符串中減去整數50

對代碼進行輕微的重新編程將使其工作正常,可以使用字符串cast(如@rvmook所示),也可以先執行計算,然後再指定字符串表示形式。

function lost (e:MouseEvent) 
{ 
    a -= 50; 
    lost.text = a.toString(); 
} 

請記住,電腦是愚蠢的,不需要準確地告訴做什麼。