プロが教えるわが家の防犯対策術!

Flash MX2004で、以下のスクリプトをボタンに設定しようとしていますが、最終的な計算結果が「NaN」になってしまいます。

/* 正解を集計して合計フィールに代入する */
on (rollOver) {
var kai:Number = Number(kotaeA01.text)+Number(kotaeA02.text)+Number(kotaeA03.text)+Number(kotaeA04.text)+Number(kotaeA05.text)+Number(kotaeA06.text)+Number(kotaeA07.text)+Number(kotaeA08.text)+Number(kotaeA09.text)+Number(kotaeA10.text)+Number(kotaeA11.text)+Number(kotaeA12.text)+Number(kotaeA13.text)+Number(kotaeA14.text)+Number(kotaeA15.text);
kaitou.text = kai;
}

kotaeA**.textとkaitou.textはTextInputコンポーネントです。
変数kaiに数値として、kotaeA**.textを加算していき、最後にkaitou.textへ代入しようとしています。

A 回答 (1件)

kotaeA01~kotaeA15には全て数字が入力されていますか?



Number("") //空文字列 あるいは undefined

Number("a") //文字列
の結果はNaNになります。

また
NaN + 12
のように計算式にNaNがあっても結果はNaNになります。


質問とは関係ありませんが配列アクセスを使うともっと見やすくなります。

kotae = 0
for (i = 1;i<=15;i++){
kotae += Number( _root["kotaeA"+i].text) );
}
kaitou.text = kotae;

ただkotaeA01などをkotaeA1に直す必要があります。

この回答への補足

ご回答、ありがとうございます。
半角の0、1,-1のいずれかが入力されるようにしてあります。
また、それぞれに
on (load) {
this.restrict = "0-9";
}
を割り当ててあります。
今から、念のため入力される「0」「1」「-1」をチェックしてみます。

配列アクセス、記述の仕方に悩んでいました。ありがとうございます。
早速、その記述に変えたいと思います。
もちろん、kotaeA01などを全てkotaeA1に直します。

補足日時:2007/08/30 08:04
    • good
    • 0
この回答へのお礼

配列アクセスに変更する時に、kotaeA01などを全てkotaeA1に直していたら、記述にミスを発見しました。
その後、テストしたら問題なく動作しました。

haoxiao様、ありがとうございました。

お礼日時:2007/08/30 09:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!