- ベストアンサー
Flash判別式がうまくいかない?初心者の疑問
- Flash CS5で判別式を使っている初心者がいますが、うまくいかないとのことです。
- 指定されたプログラムを実行しても正解の場合にgoodが判別されず、常にfalseになるようです。
- 間違っている箇所を教えていただきたいとのことです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ご質問されている内容そのままで 4つのテキストフィールド にはそれぞれ 変数名 を付けて 2つのボタン(ボタンインスタンス)には書かれていらっしゃるそのままのスクリプトをコピペで貼り付けましたが 無事に動作しましたよ 【図】↓。 テキストフィールドもボタンも 全てを同じ階層(_root なら _root)に置いた場合はご質問のままでも無事に動作します。 アヤシイのはターゲットパスだと思います。 確認してみてください。 「ターゲットパス」 http://homepage3.nifty.com/ginga-b/MX/targetpath.html 階層にズレがありませんか? 例えば テキストフィールド「box1」と「box2」と「作問ボタン」は _root の階層にあるのに テキストフィールド「hanbetu」と「判別ボタン」は ムービークリップ の中にあるとか またはその逆とか または違うムービークリップ内にあるとか。 ============== 正常に動作しないという本題とはズレますが以下は他の点に関してです。 書かれていらっしゃるスクリプトは 変数の型指定が入っていますから ActionScript 2.0 です。 ActionScript 2.0 を走らせるためには 最低限 Flash Player 6 以上用の SWF をパブリッシュする必要があります。 一方 テキストフィールド に変数名を付けるのは Flash Player 5 までです。 Flash Player 6 以上では テキストフィールド に変数名を付けることは非推奨です。 「テキストフィールドのインスタンス名と変数名について」 http://help.adobe.com/ja_JP/AS2LCR/Flash_10.0/00000270.html とは言っても 実際には Flash Player 6 以上でテキストフィールド に変数名を付けることは可能ですし,不具合が起きることも稀です。 (理解・認識不足から怪奇現象が起きることは多々ありますが。) 今回のご質問の場合も テキストフィールド の変数名云々に関わらず一応は正常動作します。 正常に動作しない原因を究明して 対処してから テキストフィールド の 変数名削除 と インスタンス名付加 をお薦めします。 各テキストフィールドに変数名と同名のインスタンス名を付けた場合のスクリプトは次のようになります。 ※ただしターゲットパスは不明なので (作者でないとわからないため)略します。 (ムービークリップは存在せず全てが同階層にある場合) ---『作問ボタン』-------- on (release) { box1.text = Math.floor(Math.random() * 10 + 1); box2.text = Math.floor(Math.random() * 10 + 1); } --------------------- ---『判別ボタン』-------- on (release) { var kaitou:Number; kaitou = Number(box1.text) + Number(box2.text); if (Number(ans1.text) == kaitou) { hanbetsu.text = "good"; } else { hanbetsu.text = "false"; } } ---------------------
お礼
ご回答ありがとうございました。 いろいろと試行錯誤しながらも、アドバイスとおり実行した結果、ゴールにたどり着けました。ご丁寧で親切ななアドバイスに深謝します。