フレーム間移動時に変数を保存しておく方法

このQ&Aのポイント
  • フレーム間移動時に変数を保存する方法を教えてください。
  • Windows-XP、Flash8で作業しています。フレーム#1とフレーム#2で計算を行い、結果を他の変数に代入しています。しかし、フレーム#2からフレーム#1に戻ると、変数が消去されてしまいます。フレーム間で変数の値を保持する方法を教えてください。
  • フレーム間で変数の値を保持する方法がわかりません。フレーム#1で計算を行い、結果をフレーム#2で使用したいのですが、戻ると変数が初期化されてしまいます。効果的な変数の保存方法を教えてください。
回答を見る
  • ベストアンサー

フレーム間移動時に変数を保存しておく方法

フレーム間移動時に変数を保存しておく方法 Windows-XP、Flash8 で作業しています。 フレーム#1に下記の算式を作ってあります a - b = c   h - i → j d - e = f    k - l → m c + f = g        n この内 a b d e は「テキスト入力・変数名はそれぞれ a b d e 」に設定して、c f g h i j k l m n は「ダイナミックテキスト・変数名はそれぞれ「c f g …… n」と設定しました。 a~gで計算した結果をh~nに代入して「計算の控え」とします。 同じくフレーム#2には下記の算式を作りました。 a1 - b1 = c1   h1 - i1 → j1 d1 - e1 = f1    k1 - l1 → m1 c1 + f1 = g1         n1 a1~e1は「テキスト入力・変数名はそれぞれ a b d e 」、g1~n1は全て「ダイナミックテキスト・変数名はg1 h1 …n1」と設定します。そして、a1~g1で計算した結果は、フレーム#1のh~nでの各項目と「足し算」をして、フレーム#2のh1~n1に「累計額」として表示させます。 即ち、各フレームで「a~g」の計算をして、フレームが増えてゆく毎に前フレームの「a~g」欄を累積加算して「h~n」欄に累計を表示してゆくデータを作っています。 ■フレームのスクリプトに、 a = b = d = e = ""; function Keisan() { var a_num,b_num,d_num,e_num; a_num = a = (a == "") ? 0 : getNumber(a); b_num = b = (b == "") ? 0 : getNumber(b); d_num = d = (d == "") ? 0 : getNumber(d); e_num = e = (e == "") ? 0 : getNumber(e); c = c_num = a_num - b_num; f = f_num = d_num - e_num; g = c_num + f_num; return g; } function getNumber(val){ if(val.indexOf("<") > -1){ val = val.toUpperCase(); val = val.substring(val.indexOf('">',val.indexOf('KERNING')) + 2,val.lastIndexOf('</FONT')); } return Math.abs(val); } ■それぞれの「=」にボタンスクリプトとして、 on(Release){ Keisan(); } を書き込み、「a b d e」「a1 b1 d1 e1」が空欄時であっても「Nan」の出現を防ぐ処理をいたしました。 ところが、「フレーム#1 → フレーム#2」で「フレーム#2」のデータ作成後、「フレーム#1」に戻ると「フレーム#1」でのデータの内「a b d e」が消去されてしまいます。 フレームスクリプトでの「a = b = d = e = "";」が理由と思われますが、「フレーム#1」に戻った時でも「a b d e」のデータを残す必要があります。 【フレーム間移動時に変数を保存しておく方法】での処理が必要のようですが、その処理方法がわかりません。ご教授頂ければと思います。

  • mcx
  • お礼率50% (23/46)
  • Flash
  • 回答数1
  • ありがとう数10

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.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」プロパティが テキストフィールドに表示されている文字列プロパティです。

mcx
質問者

お礼

ご連絡とお礼が遅れまして大変失礼いたしました。 >if (stat_flag == undefined) { 以下を追加したスクリプトでフレーム間の移動に伴うデータの抹消が解消されました。 実際のデータ画面では、「フレーム間移動」を行うデータが複数ありましたので、当初「stat_flag」一本で処理をしていて混乱いたしました。データ各一つに対して「stat_flag」に「stat_flag01」「stat_flag02」「…」としましたら、全部に対応してくれました。(実はここに至までに時間が必要だったのですが、) ご親切な解説共々大変有難うございました。利用させていただきます。

関連するQ&A

  • 多変数関数の最大値

    7変数の多変数関数をf(a,b,c,d,e,f,g)=19a+18b+17c+16d+15e+13f+11gとする。次の3つ条件をすべて満たす時のfの最大値を求めよ (1)a,b,c,d,e,f,gは0≦a,b,c,d,e,f,g≦98を満たす整数 (2)a+b+c+d+e+f+g=98 (3)3a+4b+5c+7d+8e+10f+12g=544 この問題はどっかの問題集にあったものではなくあるものを求めるために自分で作った問題です。しかしいくらがんばっても自分ではどうすることもできません。この問題はどうすれば解くことができるのでしょうか?この問題を解けるようなフリーソフトを探しましたが見つかりませんでした。もし問題を解けるフリーソフトがあるならそれも教えて欲しいです。

  • CでOpenMP、パラレル内での共有変数の宣言方法

    C言語でOpenMPを利用したとき、parallel構文内で、共有変数を宣言する方法はありますか? OpenMPを利用して、スレッド並列にしたプログラムを書いています。 #pragma omp parallel { ~~ ~~ } この、~~の部分で、大きく分けて二つの処理をしているので、関数に分けました。 #pragma omp parallel private( a, b, c, d, e, f, g, h, i, j ) { func1( a, b, c, d, e, f, g, h ); func2( a, b, c, d, e, f, g, h, i, j ); } このとき、2つ目の関数で共有変数を複数使う必要があります。 しかし、共有変数の数は多く、引数にするとかなりの数の引数になってしまいます。 そこで、できればfunc2()という関数の中で、スレッドで共有できるshared変数を宣言したいのですが、方法がわかりません。 どなたか、知っている方教えてください。

  • php データ取得[変数]のとり方

    請求書を作りたいと思います。 例えば 日付    摘要 単価 個数 計 ○月○日   A  B   C  D           E  F   G  H            ↓10行位              小計              消費税              合計 ※行数は、時々により変わります。  E、F、G、Hもそれによりあったり無かったりです。 こういったケースケースで有るか無いか変わるような変数 は、どのように定義したらよいですか? データがあろうがなかろうが20行位のフレームは、 体裁上作りたいのですが・・・・ PHPの本でお勧めあれば教えてください。

    • 締切済み
    • PHP
  • エクセル マクロでセルを自動移動

    例1のようになっているエクセル表があります。 データは右方向、下方向へ増えます。 Cの列以降は4つ単位でしかデータは増えません。 それを例2の表のように列A,Bのデータはそのままに Cの列以降の4つのセルを区切りに下の行に移動して、 空白の列まで言ったらA2の行以降を最後の行まで繰り返しするという マクロを書くことは可能でしょうか。 出来ましたらそのマクロを教えてください。 例1 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 G3 H3 I3 J3 K3 L3 M3 N3 例2 A1 B1 C1 D1 E1 F1 A1 B1 G1 H1 I1 J1 A1 B1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 A2 B2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 A3 B3 G3 H3 I3 J3 A3 B3 K3 L3 M3 N3

  • Excelの移動しない列

     Excelで表示されている列が左から   A B C D E F ... のとき,右方向にスクロールさせると表示領域が   B C D E F G ... (Aが左に消える)   C D E F G H ... (Bが左に消える) と変化していきます.  ここで,Aをスクロールアウトさせない方法を知りたいと思っています.大きな表を作成したときに,表のどこを見ていても各列が何を表しているかを知りたいからです.  具体的には,右方向にスクロールさせたときに最初に消えるのがAではなく,   A C D E F G ... (Bが消える)   A D E F G H ... (Cが消える) という変化をさせたいと思っています.  どうすればいいのでしょうか.

  • フレームの組み方

    お世話になります。 フレームの組み方が分からなくなってしまいました。 どなたかご教示ください。こういうフレーム分割に したいのです。 ---------------------------------------- A ----------------------------------------      |   D   B  |------------------------------      | ------|   E      |   C  |      |      | -----------------------------------------      F ------------------------------------------ よろしくお願いいたします。

  • セルの交換について

    今このようなデータがあったとします。   A B C D E F G H   ------------------ ~ 7|    a   - - - - 8|    b   1 - - - 9|    c   2 4 - - 10|    d   3 5 6 - セルを交換していって作りたいと考えております。 4×4の場合ですと上の状態だと 手順としては (1)E7とH10を交換 (2)E8とG10を交換 (3)E9とF10を交換 (4)E10とE10を交換 (5)F7とH9を交換 (6)F8とG9を交換 (7)F9とF9を交換 (8)G7とH8を交換 (9)G8とG8を交換 (10)H7とH7を交換 で下のような図になると思います。   A B C D E F G H   ------------------ ~ 7|    a   - - - - 8|    b   6 - - - 9|    c   5 4 - - 10|    d   3 2 1 - 頂いたデータはすべて4×4ではないのでこれをnという一般のときでもできるようにしたいのですが、わからないのでコードを教えていただけますでしょうか?nはC7から最終行でいいかと思います。 とりあえず思いついた方法なのでこの方法以外でも出来るというのであれば教えていただきたいです。

  • sedの引数を変数に格納する方法

    例えば、次のコマンド echo a b c d e f | sed -e 's/.*\(b.*e\).*/\1/' -e 's/.*b c *\(.*\) .*/\1/' の「-e 's/.*\(b.*e\).*/\1/' -e 's/.*b c *\(.*\) .*/\1/'」の部分を変数に格納して echo a b c d e f | sed $regex のように実行したいのですが、変数が展開されるときにクォーテーションマークがどのように付与されるのかを理解できず、 regex=’-e s/.*\(b.*e\).*/\1/' まではできたのですが、コマンドにスペースが入った場合、どうすれば良いのかわからないため、後半のコマンドを格納することができません。 この場合、どのように変数に格納すれば良いのでしょうか。 よろしくお願いいたします。

  • 次のように表される対称行列の名前は?

    以下のように表される対称行列に固有の名前はありますでしょうか? 2次の場合 | a b | | b a | 4次の場合 | a b c d | | b a d c | | c d a b | | d c b a | 8次の場合 | a b c d e f g h | | b a d c f e h g | | c d a b g h e f | | d c b a h g f e | | e f g h a b c d | | f e h g b a d c | | g h e f c d a b | | h g f e d c b a | Bisymmetric matrixの一種だと思うのですが,4次および8次の場合には 2次の区分行列に分割した場合,各区分行列においても対称性が現れています. もしご存知の方がいらっしゃいましたらご教授頂けると助かります.

  • C言語の演算子!=の使い方で質問です。

    if(a != b != c != d != e != f != g != h != i != j != k != l != m != n != o) 上記は間違いです。 変数a~nが同じじゃなければとしたいのです。 ご指導お願いします。

専門家に質問してみよう