2011-12-13 10 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

+0

私はこの部分が間違っていると思います:cash.text = "" + a - = 50多分あなたが望むものは次のとおりです:cash.text = "" +(a -50) – SERPRO

答えて

0

テキストを配置するフレーム6にaで計算しているからです。 a -= 50Stringと解釈されるべきだということをFlashに伝えておくとよいでしょう。あなたは、このようにコードを変更した場合、それは動作します:

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

Ah !それはうまくいくようです。どうもありがとう。私はそれを覚えています! – PlayerX

0

@rvmookコメントで彼の答えと@SeRPRoで言及したよう。あなたのエラーは約operator precedenceです。つまり、操作が行われている順序です。あなたの例では、aからの50の意図された減算の前に、空の文字列の追加と値aが起こっています。その結果、値aの文字列表現を含む文字列から整数50を減算しようとしています。

コードを少し修正すると、@ rvmookのように文字列castが表示されます。または、計算を最初に実行してから文字列表記を割り当てることで問題なく動作します。

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

コンピュータはダムであり、何をすべきかを正確に伝える必要はありません。

+0

ああ!単なる好奇心から;それはフレーム1の中で計算を実行しています。私はそれを言ったので:int?その情報を取得します。それは次のフレームでその情報を取得しませんか?ご覧のとおり、私はこれについて非常に新しいです。しかし、私は本当に刺激的です – PlayerX

+0

いいえ、 'a:int'と言って、フレーム1の変数を宣言しています。あなたは' a - = 50'を実行しているところで計算を実行しています(または実行しようとしています) –

+0

' - ='が 'lost'関数で実行されていることを示すためにコードを少し更新しました –

関連する問題