• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:flashのActionscriptについて)

flashのActionscriptについて

このQ&Aのポイント
  • flash mxでActionscriptを使って物を作りあげようとしています。どうやってflagの値を更新するのか知りたいです。
  • Actionscriptを用いて物を作っていくには、同期と非同期のプログラムどちらが向いているのか知りたいです。
  • flashの得意な人の意見も聞きたいです。

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

  • ベストアンサー
  • jakarta
  • ベストアンサー率38% (607/1597)
回答No.2

>そっちのフレームで値をflag = 2;と書いて プログラムの内容はざっと見ただけなのですが、flagがローカル変数として利用していることがわかります。 FlashのActionScriptの場合、タイムラインも変数のスコープに関係がでてきます。同期、非同期という質問の意図がよくわからなかったのですが、恐らくこのことをお聞きしたかったのでは?と思います。 _global.flag と flag は別物になり、flagで変数を立てた場合、有効なタイムライン上でしかアクセスできないことになります。(無効なタイムライン上では新たに変数が作られて代入されることになる) _global.flagでうまくいくようならば変数のスコープ(有効範囲)に注意してタイムラインをいじってみて下さい。 ちなみにtrace以外にステージの脇にテキストフィールドを配置し、ダイナミックテキストとして変数の値を代入させて動作をみはるというのも結構便利です。 変数について簡略な解説はオライリーの『ActionScriptデスクトップリファレンス』pp.12あたりを参考にされると役立つかと思います。

remonedo
質問者

補足

_global.flag に書き換えてみたのですが、別フレームから、ソートプログラム(AS)のフレームへgotoAndplay()で戻るようにしたのですが、flagの値は反映されませんでした。 別フレームに書かれているプログラムにflagの値を戻す(渡す)ことは無理なのでしょうか?

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • jakarta
  • ベストアンサー率38% (607/1597)
回答No.1

>flagの値の変更が上手く行きません。 具体的にはどのような方法をっているのでしょうか。 条件式を使っているならばそれの記述があいまいな可能性が考えられます。 >flashでは同期、非同期どちらでプログラムを作っていった方が向いているのでしょうか? どのようなものを作りたいのかよくわかりませんのでもう少し詳しく補足してもらえますでしょうか。

remonedo
質問者

補足

>具体的にはどのような方法をっているのでしょうか。 条件式を使っているならばそれの記述があいまいな可能性が考えられます 用意された配列をソートさせるのなんですが・・・ function quick(d, left, right) { if (left>=right) { return; } trace("左は"+(left)); trace("右は"+(right)); var a = (left+right)/2; //基準値はとりあえず配列の中心の値で var b = Math.floor(a); var p = d[b]; trace("基準値は"+p);     _global.flag; flag =0; var l = left; var r = right; var tmp; while (l<r) { // ここで左右のmaruの位置が決まる while (d[l]<p) { l++; } while (d[r]>p) { r--; } *ココ* while(flag == 1){ Pofmaru1(l); //maru1を移動させる } while(flag == 2){ Pofmaru2(r); //maru2を移動させる } ・・・・・ ・・・・・・ // maru1を移動させる関数Pofmaru1 function Pofmaru1(l) { if (l == 0) { maru1.gotoAndPlay(8); }else if (l == 1) { maru1.gotoAndPlay(10); }else if (l == 2) {  ・・・・ function Pofmaru2(r){ if (r == 0) { maru2.gotoAndPlay(9); }else if (r == 1) { maru2.gotoAndPlay(11); }else if (r == 2) { ・・・・・・ と言った感じで書いています。 そこで、if文で指定フレームへ移動するようにしているのでそっちのフレームで値をflag = 2; と書いてPofmaru2(r);の関数へ進むようにと思いました。しかし、flagの値が変更されず無限ループしてしまいました。どこが悪いのでしょうか? どうしたらいいのでしょう?

すると、全ての回答が全文表示されます。

関連するQ&A