- ベストアンサー
フレーム間移動時に変数を保存しておく方法
- フレーム間移動時に変数を保存する方法を教えてください。
- Windows-XP、Flash8で作業しています。フレーム#1とフレーム#2で計算を行い、結果を他の変数に代入しています。しかし、フレーム#2からフレーム#1に戻ると、変数が消去されてしまいます。フレーム間で変数の値を保持する方法を教えてください。
- フレーム間で変数の値を保持する方法がわかりません。フレーム#1で計算を行い、結果をフレーム#2で使用したいのですが、戻ると変数が初期化されてしまいます。効果的な変数の保存方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> 「a = b = d = e = "";」が理由と思われますが、 ということでしたら, a = b = d = e = ""; この部分↑を次のように↓変更すれば良いと思います。 //もし変数 stat_flag の値が未定義であれば if (stat_flag == undefined) { //変数 a,b,c,d の値を空白文字にして a = b = d = e = ""; //変数 stat_flag の値を true にする start_flag = true; } Flash Player 7 以上用 SWF をパブリッシュする場合 値を代入していない変数の値は「undefined」 になります。 ※Flash Player 6 以下でも基本的には 「undefined」 ですが あえて計算などをしようとすると 自動的に 0 または ""(空白文字列) として扱われます。 --- ちなみに ------------------ テキストフィールド の変数名は Flash Player 4 用の SWF や Flash Lite 1.x 用の SWF をパブリッシュするときのみに使う機能(すごく古い機能)で, それより後のバージョン用 SWF をパブリッシュする場合は 非推奨 になっています。 (簡単に言えば,通常はテキストフィールド に変数名を付けてはいけません。) Flash Player 6 以上用の SWF をパブリッシュするときは テキストフィールド には変数名を付けず,インスタンス名を付けて テキストフィールド インスタンス.text でその値にアクセスするようにします。 ・例1 //変数a_num に テキストフィールド a の値を代入 var a_num = Number(a.text); ・例2 //テキストフィールド a に変数a_num の値を表示 a.text = a_num; ※ Flash 8 のヘルプで 「変数名 ダイナミックテキスト」などと検索すると 上記に関する事項がたくさん出てきます。 ※ ActionScript 3.0 などでは var my_txt:TextField = new TextField(); のように テキストフィールドに変数を当てて使うことが良くありますが これは全く意味が違います。 ActionScript 3.0 などでの変数は テキストフィールドインスタンスを参照する変数であって テキストフィールド内に示された値の入れ物ではありません。 ActionScript 1.0(通常) でも 2.0 でも 3.0 でも 「テキストフィールド」は「インスタンス」として扱うべきものです。 その「テキストフィールドインスタンス」の「text」プロパティが テキストフィールドに表示されている文字列プロパティです。
お礼
ご連絡とお礼が遅れまして大変失礼いたしました。 >if (stat_flag == undefined) { 以下を追加したスクリプトでフレーム間の移動に伴うデータの抹消が解消されました。 実際のデータ画面では、「フレーム間移動」を行うデータが複数ありましたので、当初「stat_flag」一本で処理をしていて混乱いたしました。データ各一つに対して「stat_flag」に「stat_flag01」「stat_flag02」「…」としましたら、全部に対応してくれました。(実はここに至までに時間が必要だったのですが、) ご親切な解説共々大変有難うございました。利用させていただきます。