flashのActionscriptについて

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

flashのActionscriptについて

flash mxでActionscriptを使って物を作りあげようとしています。そこで、flagを立てて、flagの値などによって一時的にプログラムを止めておいてムービーの再生終了を待って、次のプログラムへ進むようにしたいのですが、flagの値の変更が上手く行きません。 ムービー再生終了後にflagの値を更新するようにするのはどうしたらいいのでしょうか? また、Actionscriptを用いて物を作っていくのに当たり、flashでは同期、非同期どちらでプログラムを作っていった方が向いているのでしょうか? ネットなどでも色々調べてみているのですが、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

  • flashのActionscriptでのムービーとの連携(再生、停止)

    if文で値によってgotoAndPlayで指定フレームへ移動しムービーを再生させ、そのフレームが再生されたら、再生後でムービー止めその状態を保持したまま、プログラムへ戻り次の処理をし、その値に応じたフレームへ移動しムービーを再生させていくという繰り返しをしたいと思ったのですが、ネットで調べたり本などを呼んでも解決策が見つかりません。困ってます。 flash MX でこのような事をするのは無理なのでしょうか?アドバイスくださいお願いします。

  • flashってどうやって作るの?

    プログラムはよく書くのですが、flashはド初心者です。 ActionScriptでプログラムを書く書き方は大体わかるのですが、それをどうやってswfファイルにするのでしょうか。 http://www.geocities.jp/coa9999/ さんのParaFlaは使わせてもらい、色々画像のムービーはつかった事がありますが ActionScriptでflashを作りたいです。メモ帳などでスクリプトを作って拡張子代えてとかで再生できるようになりますか?・・・ならないですよね; ActionScriptでflashを作るのは何かシェアウェアが必要なのでしょうか。 どなたか教えてもらえますでしょうか。よろしくお願いしますm(_ _)m

    • ベストアンサー
    • Flash
  • ActionScript3から過去のActionScript2に移りたいのです

    2ヶ月ぐらい前にFlash CS3で参考書を見ながらActionScript3を始めたのですがソースを見れば大体は理解できるようになりましたが参考書に出てきた所以外の部分だと自分の頭が悪く理解や応用ができずに現在は心が折れてしまいました。 ただ自分の目標としているオリジナルゲームは作りたいのでActionScript3よりも過去のActionScript2の方が簡単だった、という文章をネットで見かけたのと私の求めているようなソースがActionScript2の物が多いという理由で過去のActionScript2の方を覚えようと思いました。 そこで本題なのですが現在「FLASH ActionScriptバイブル」を買おうと思っています。 Wikipediaで調べた所 ActionScript1はFlash 5~Flash MX ActionScript2はFlash MX 2004~Flash 8 上記のようになっていたのです。 私はActionScript2を学びたいのですが「FLASH ActionScriptバイブル」は「Macromedia Flash 5日本語版を最大限に生かすスクリプト言語」と書いているのでActionScript1って事ですよね?。 これはActionScript2を学びたい者には買っても意味がないのでしょうか?(これ以外にもActionScript1の本を買ってもActionScript2を学ぶ私には無駄になりますでしょうか?)。 それとも買っても問題ないのでしょうか?。

    • ベストアンサー
    • Flash
  • ActionScriptを印刷

    ActionScript 初心者です。 Flash MX2004 を使ってActionScript でプログラムしています。 ActionScript の部分だけをまとめて印刷したいのですが、 便利な方法はありますか? 今は一つずつテキストエディタにコピーペーストしています。 専門家の方お願いします。

  • flash actionscriptとタイムライン

    flash CS4 Xpでの開発環境です。 メインのタイムラインとムービークリップ自身が持つタイムラインの二つのラインがあります。メインのタイムラインは5fで構成されており、1Fずつキーフレームが設置してあります。 メインのタイムライン上にアクションスクリプト 1F目 var flag=0; stop(); if(flag=1){gotoAndPlay(2)} と書かれています。 ムービークリップはメインのタイムライン上の1F目に設置してあり,ムービークリップのタイムラインは60Fで構成されていて、60F目にactionscript flag=1; と書いています。 ムービークリップの動きがすべて終わってから、メインのタイムラインを2F目に進めたいのですが、現状ではすぐに2F目にうつってしまうような感じになってしまっています。 どこがいけないのでしょうか? もし知っている方がいましたらご教授いただきたいです。 よろしくお願いします。

  • Flash ActionScriptで、画像に保存したい!

    Flashプレイヤーで再生中のFlashアプリで、 写真を取り込んだり、図形を書いたり、文字を配置したりするFlashアプリを作成することになったのですが、 最後に作成したイメージの保存を、ActionScriptで行いたいのですが、何か方法がないでしょうか? 開発ツールのFlashでイメージの保存する方法ではなく、 Flashプレイヤーで再生中のFlashアプリの機能として 保存ボタンのプログラム方法が知りたいのです。 画像のフォーマットは、JPEGでもGIFでもBitmapでも構いません。 バージョンはFlash8で、ActionScriptは2.0です。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • ActionScriptについて

    Flash初心者です。 これからActionScriptの勉強をしようと思うのですが、ActionScriptには二次関数や三角関数の知識が必要になるのでしょうか。 他のプログラミング言語に関しても全く知りません。ActionScriptは簡単な方だと聞いたのですが、これを覚えれば、ある程度他の言語にも応用できるのでしょうか。 また、ActionScriptについて初心者向けに解説しているサイトがあれば教えて下さい。使っているのはFlash MX 2004です。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • Flash、actionscriptを学ぶには

    こんにちは。 在宅でWEBデザインをしています。 先日、Flashとactionscriptを使ったサイトの制作を受け、制作したのですが、それまで使ったことがなかったので、とても難儀しました。 特にactionscriptはプログラムの考え方自体が、全く分かっていないので、会社の先輩に手を貸していただきました。 今回の仕事で、Flashとactionscriptを学ぶ決心はついたのですが、こちらのサイトで、独学は回り道につながるからお勧めできない、という方もいらっしゃいます。 実際に、お仕事にされている方のご意見として、市販の本でコツコツ勉強をするのと、スクール(長期間は無理ですが)に通って学ぶのと、どちらがお勧めでしょうか。 また、本で独学する場合のお勧めの書籍、また短期間のお勧めスクールがありましたら、お教えいただけると助かります。(東京在住です) よろしくお願いいたします。

  • flash mxで処理を待機させておく方法は.....?

    以前にも質問させていただいたのですが、非同期処理であるという事にも手こずって、どうしても解決できなく行き詰ってしまっています。 スクリプトの途中だけの部分ですが 再帰の中で // ここで実際に○を移動させる Pofmaru1(l); Pofmaru2(r); 再帰の外で // maru1を移動させる関数Pofmaru1 function Pofmaru1(l) { if (l == 1) { gotoAndPlay("maru1",2); }else if (l == 2) { ・・・・・・ // maru2を移動させる関数Pofmaru2 function Pofmaru2(r) { if (r == 1) { gotoAndPlay("maru2",2); }else if (r == 2) { ........ と書いてレイヤーmaru1とレイヤーmaru2の指定フレームへ移動しムービー再生後にソートプログラムへ戻り次の処理へ移るようにしたいのですがwhile文でflagを使い処理を待たせることを考えたのですがflashは非同期であるためflagの値のやり取りが上手く行きませんでした。 タイミング処理においてコールバック関数というものがあるという所に行き着いたのですがプログラムがあまり得意でなくイマイチ理解することができません・・。 flash mxで処理を待機させておくといったことを実現するにはどのように対処するといいのでしょうか? 何かアドバイスください。お願いします。

    • ベストアンサー
    • Flash
  • Flash CS4 + ActionScript 3.0 で swf

    Flash CS4 + ActionScript 3.0 で swf ファイルを作成しました。 メインのタイムラインの 1 フレーム目に ActionScript で stop(); を 指定したのですが、swf 単体で再生(Adobe Flash Player 10で再生)して 確認したところでは問題なく 1 フレーム目で停止しますが、 swf を HTML に配置してブラウザで確認したところ、 ロード時にはメインのタイムラインがすべて再生されてしまいます。 これについての対処法はあるのでしょうか? 自分なりの調べて見つけた方法としては、 ↓こんな感じだったのですが、根本解決ではない気がするので、  何か良い方法があれば、教えてください。よろしくお願いします。 ・外部ファイルを読み込むだけの swf を作って、  実際に再生したい swf を UILoader に読み込む ・全部ムービークリップに入れてしまって、  メインのタイムラインには、そのムービークリップだけ配置する

    • ベストアンサー
    • Flash

専門家に質問してみよう