• 締切済み

Flash MX2004で計算結果が「NaN」になります

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へ代入しようとしています。

  • Flash
  • 回答数1
  • ありがとう数1

みんなの回答

  • perse
  • ベストアンサー率74% (113/152)
回答No.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に直す必要があります。

haoxiao
質問者

お礼

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

haoxiao
質問者

補足

ご回答、ありがとうございます。 半角の0、1,-1のいずれかが入力されるようにしてあります。 また、それぞれに on (load) { this.restrict = "0-9"; } を割り当ててあります。 今から、念のため入力される「0」「1」「-1」をチェックしてみます。 配列アクセス、記述の仕方に悩んでいました。ありがとうございます。 早速、その記述に変えたいと思います。 もちろん、kotaeA01などを全てkotaeA1に直します。

関連するQ&A

  • Flash 判別式について

    初心者です。判別式がうまくいきません(Flash CS5)。 box1,box2,hanbestuはダイナミックテキストで変数、ans1はテキスト入力でします(インタラクティブに入力)。 下記のプログラムでやった場合、正解の時にgoodが判別されず、常にfalseになってしまいますが、どこが間違っているのかご教示いただきたくお願いいたします。 on (release) { box1 = Math.floor(Math.random()*10+1); box2 = Math.floor(Math.random()*10+1); } on (release) { var box1:Number; var box2:Number; var ans1:Number; kaitou=box1+box2; if(ans1==kaitou){ hanbetsu="good"; }else{ hanbetsu="false"; } }

  • AS3 Flash 変数の扱い方について

    質問なんですが、外部テキストをロードして完了したら イベントハンドラで数値の5を取得し、 それを別の変数に代入して保持させようと思い、 外部ASファイルのカスタムクラスのプロパティに代入したんですが上手く行きませんでした。 なのでどのようにしたら良いのか教えて頂けませんか? プログラムは以下になります。ではよろしくお願いします。 ***ASファイル*** package{ public class ImageRoadClass{ public static var number:int; // 返り値保持 private var number2:int; // 返り値保持 function ImageRoadClass(){ } public function setNumber(number:int):void{ this.number2 = number; } public function getNumber():int{ return this.number2; } } } ***flaファイル*** // インスタンス生成 var imageRoad:ImageRoadClass = new ImageRoadClass();        ・ (割愛)  ・        ・ // ロード完了後のイベントハンドラ function jsonReadHandler(e:Event):void{ var json_data:String = URLLoader(e.currentTarget).data; // 読み込んだテキストをjsonオブジェクトにデコード var json_decode_data:Object = JSON.parse(json_data);       // ***ここで値を外部クラスのプロパティに代入*** ImageRoadClass.number = json_decode_data[0].number; imageRoad.setNumber(json_decode_data[0].number); trace(ImageRoadClass.number); // 出力結果:5 trace(imageRoad.getNumber()); // 出力結果:5 } trace(ImageRoadClass.number); // 出力結果:0  保持できてない trace(imageRoad.getNumber()); // 出力結果:0  保持できてない

    • ベストアンサー
    • Flash
  • 確率の判定方法が分かりません

    確率の判定方法が分かりません 変数に0.5%を設定することで、1000回中5回に”当たった”を表示するプログラムを作りたい場合 どうすればいいでしょうか? イメージとして、下にあるような方法なんですが。 var rate:Number = 0.5; //百分率 var num:Number = 0.5 / 100; // 百分率を実数に戻す var kaisu:Number = 1000; var kai:Number = kaisu * num; if(1~1000のランダムの値 <= kai) { //当たった }

    • ベストアンサー
    • Flash
  • 外部テキストから変数の取得(読み込みは成功)

    外部テキストから変数の取得(読み込みは成功) Flash CS5Proの体験版を使っています。 外部テキストから変数を取得したいのですが、呼び出すことが出来ずに困っています。 このように書いたのですが・・・ var varLoader:URLLoader = new URLLoader(); varLoader.dataFormat = URLLoaderDataFormat.VARIABLES; var url:URLRequest=new URLRequest("num.txt");//テキストにはm=50とだけ書いてあります varLoader.addEventListener(Event.COMPLETE, var_loadcomp); varLoader.load(url); // 外部テキストのロード完了 function var_loadcomp(e:Event) { var img_n:URLVariables = e.target.data; trace(img_n.m);//結果:40 } trace(img_n.m);//結果:未定義のプロパティ img_n へのアクセスです。 ここで取得するにはどのようにすればよいのでしょうか・・・。 未定義のプロパティという事なので、一度flash側で変数fを用意して、そこに代入してみましたが、その結果はNaN、代入できていませんでした。 初歩的なことですみませんが、回答よろしくお願い致します。

    • ベストアンサー
    • Flash
  • for文内での関数の使用がうまくいきません。

    いつもお世話になってます。flash初心者です。 環境:flash 2004 MX, WIN XP ボタンが3つ、それぞれ a0, a1, a2~ a(n個)という名前で存在します。このボタンを押したときに変数の値を代入するためのスクリプトを作りました。 文が長くて、for文を使って、繰り返しの処理を省略したいのですが、for文内で、変数に 配列の値を代入することに失敗してしまいます。 まず、ダイナミックテキストの変数名を myhoge にする。 //各ボタン用のテキストを定義 var hoge = new Array(); hoge[0] = "0番のボタンを押したときのテキスト"; hoge[1] = "1番のボタンを押したときのテキスト"; hoge[2] = "2番のボタンを押したときのテキスト"; ↓ hoge[99] = "99番のボタンを押したときのテキスト"; for (var i:Number = 0; i <= 99; i++) { _root["a"+i].onRelease = function() { _root.myhoge = _root.hoge[i]; } } 上記で、該当ボタンをクリックしたときは、ボタンは反応するのですが、配列のところがうまくいってないみたいです。 原因がわかる方いらっしゃいましたらお願いいたします。

  • ブラウザ上のテキストボックスから数値を受け取って別のテキストボックスに計算結果を返す

    超初心者です。 Cの勉強をしていたのですが、javascriptにも手を出してみました。 変数の考え方が違うせいか、理解が間違っているのか・・・ ブラウザ上でテキストボックスに数値を記入して、別なテキストボックスに計算結果を返すソースを考えていました。 以下のような感じです。 HTML ------------------------ <form> 林檎 100円 * <input type=text name=txt7>個  <input type=button value="計算" onClick="func4(txt7)"><br> 合計金額は<input type=text name=txt8>円になります。 </form> ------------------------- JS ------------------------ function func4(keisan){ document.form2.txt8.value=keisan*100; } ------------------------ 上記のように変数を使うとエラーになります。「NaN」が返ってきます。 変数を使用せずに、直接受け取る値を計算すれば出来たのですが・・・ ブラウザからなにかを入力させ、それを変数に代入した場合は数値(INT)型にはならないのでしょうか?? 詳しい方、解説をお願いします・・・

  • 変数を利用した「引き算」が思うように計算できません。

    変数を利用した「引き算」が思うように計算できません。 Flash 8, WIn-XP で作業しています。引き算の内容は「a-b=c」で、aはテキスト入力・変数a、bはテキスト入力・変数b、cはダイナミックテキスト・変数c をそれぞれ設定して、「=」に下記のスクリプトを書き入れました。 on (release) { a_num = Number (a); b_num = Number (b); if (a == "") { a_num = 0; c = a_num - b_num; } else if (b == "") { b_num = 0; c = a_num - b_num; } else if (a == "" && b == "") { a_num = 0; b_num = 0; c = a_num - b_num; } else { c = a_num - b_num; } } 即ち、 aが「空欄」ならば、aに「0」を表示してa-bの答えをcに、 bが「空欄」ならば、bに「0」を表示してa-bの答えをcに、 abともに「空欄」ならば、abともに「0」を表示して、cに数字の「0」を表示させたいのです。 ところがa,bを「空欄」にすると、cでの表示は「NaN」となります。(両方に数字を代入すると計算致します。一度数字を代入してスクリプトを実行し、その後その数字を消して「空欄」にした場合にも計算するようです。但し、空欄→0にはなりません。) if文の書き方が悪いのか、テキストa、テキストb、ダイナミックc、の変数の宣言が問題なのか、色々ためしても判明しません。 尚、abcは「インスタンス名」ではなくて、「変数」で処理をしたいと思っています。 ご指導下さい。

    • ベストアンサー
    • Flash
  • 計算の結果が出るようにしたいのですが・・・

    title>JavaScript Task 9-1pre</title> <h1>計算練習プログラム (2)</h1> <form name="f"> <table border> <tr><td>番号</td><td>問題</td><td>解答</td><td>正誤</td></tr> <script type="text/javascript"> <!-- // 変数・関数の定義 var i, n, m,sol,ans; // for の制御変数, 問題 new Array// 正解を保存する配列を用意する // (配列用の変数を宣言し,配列オブジェクトを作ってその変数に代入する) function myRandom(n) { // 0 ~ n-1 の乱数を返す関数 return Math.floor(Math.random() * n);} // 「答え合わせ」ボタンのイベントハンドラ function check() { var i,t,f,ans; // 変数の宣言.反復の制御変数iと,正答数・誤答数を数える変数(初期値0)を含む for(i=1; i<=10; i++){// 以下を10回反復 (i = 1 ~ 10) document.f.si.value if(ans == sol); document.f.ci.value("○"); i+1; // 第i問の解答(ユーザーの入力)が(配列に保存した)第i問の正解と一致した場合 // 第i問の正誤欄に○を表示 // 正答数に1加える else(ans== sol); document.f.ci.value;("×"); i+1;} // そうでない(正解と一致しなかった)場合 // 第i問の正誤欄に×を表示 // 誤答数に1加える // 反復パートの終わり // 正答数・誤答数の表示 for(i=1; i<=10; i++){ // 第i問の問題の作成 n = myRandom(10) + 1; m = myRandom(10) + 1; n + m = sol; if (ans==sol) else if // 第i問の正解を(用意した配列に)保存 i = new Array(11) for(1=1; 1<=10; i++) i[1] = n + m; i[2] = n + m; i[3] = n + m; i[4] = n + m; i[5] = n + m; i[6] = n + m; i[7] = n + m; i[8] = n + m; i[9] = n + m; i[10] = n + m // 第i問の問題等の表示 (B-2) document.writeln('<tr><td>' + i + '</td><td>' + n + ' + ' + m + ' =</td>'); document.writeln(' <td><input type="text" name="s' + i + '" size="3"></td>'); document.writeln(' <td><input type="text" name="c' + i + '" size="3" readonly></td></tr>'); } // --> </script> </table> <input type="button" value="答え合わせ" onclick="check();"> 正答数:<input type="text" name="ok" size="3" readonly> 誤答数:<input type="text" name="ng" size="3" readonly> </form> ここまで作ってみました。 はじめまして。chiaken22と申します。 ここで行き詰ってしまいました。 もしかしたら間違っているかもしれません。 //のあとはどうすればよいかを書いたものなのですが、 なかなかわからなくて困っています。 間違っている場合は指摘していただきたいです。 正解でなくてもヒントでもよいので教えてください。 すみません。 よろしくお願い致します。

  • CodeStudyの問題が解りません!

    CodeStudyでjavascriptの勉強を始めたのですが、下記の問題がわかりません。 ------------------------------------------------------------------- 変数nameに自分の名前を代入し、「output()」で出力してみましょう。 //ここで変数に値を代入してみましょう。 var name = tanaka ; //変数を呼び出してみましょう。 output(name); ------------------------------------------------------------------- nameの変数にtanakaと入力して実行ボタンを押したのですが、エラーが出てしまいます。 「ReferenceError: tanaka is not defined」というエラーです。 どなたか正解を教えて頂けないでしょうか。 以上、何卒よろしくお願いいたします。

  • 変数をうまくキャスト(型変換)できない

    ActionScript2.0での話なのですが、テキストボックス(変数)から入力された数値から演算しようとしているのですが、うまくいきません。 それで、インターネットで原因を探ったわけですが、テキストボックスに数値を入力した場合、文字型(String)になってしまうことと、それを数値(Number等)にキャスト(型変換)しなくてはいけないところまではなんとか、理解できたのですが、 A = Number(B) * 1000; ※Bがテキストボックス(変数) とすると、結果がNaNになってしまいます。 trace(B); してみると <TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="_ゴシック" SIZE="50" COLOR="#000000" LETTERSPACING="0" KERNING="0">2</FONT></P></TEXTFORMAT> ※テキストボックスBには「2」と入力されている状態です。 となっており、どうもこのタグがうまくキャストできない原因なのではと思っているのですが、こうした場合、どのようにすればいいのでしょうか。 なお、FLASHのバージョンはCS6、ただ私自信はMXから最近アップグレードしたので、ActionScript2.0の基礎をやっと理解できたかできないかくらいの実力です^^;

    • ベストアンサー
    • Flash

専門家に質問してみよう