• 締切済み

Actionscriptでのフレーム間の移動

// ここで実際に○を移動させる 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を移動させる処理を呼んで、gotoAndplayでmaru1レイヤーの2フレーム目へ飛び、2フレーム目が再生されたら、次にクイックソートのプログラムに戻り、関数 Pofmaru2(r); を処理するようにしたいのですが、うまくいきません。C言語であれば普通if文の処理がされたら自動でプログラムに戻ってきて、Pofmaru2(r);の処理へ移ると思うのですが....Actionscriptはそうならないのでしょうか? ネットや本などで色々調べてみたのですが解決策が見つからず行き詰ってしまって困っています。 flash mxでプログラム通りにフレーム間を移動するようにするのは無理なのでしょうか?

みんなの回答

回答No.1

全フレームにまたがるレイヤーを作成し、 そこにスクリプトを書くのは? 自分は広いステージで作業したいので、 アクションパネルを閉じて、 asファイルを他のテキストエディタで編集したものを、 そのレイヤーにincludeしています。

remonedo
質問者

お礼

今日ちょっと思いついた事でいじってみたらちゃんと処理されるようになりました。 回答をくださりありがとうございました。

関連するQ&A

  • flashのActionscriptでのムービーとのタイミング処理

    スクリプトの途中だけの部分ですが 再帰の中で // ここで実際に○を移動させる 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を目的の場所へ移動するムービーを呼び出して再生するようにしたいと思いました。 しかし、最後のムービーだけしか表示さえれない状態です。if文で指定のフレームへ移動してそのムービーが再生されてから、次のプログラムの動きへ移るようにしたいと思いました。そこでタイミング処理をすればいいのではないかと思ったのですが、いろいろ調べてみたのですが、プログラムがあまり得意では無く、再帰の中でフレーム移動の関数を呼び出しているので、どうしたらいいのかわからず行き詰ってしまい困っています。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
  • actionscript3 フレームから出るとき

    actionscript3 フレームから出るとき 「フレームから出るとき、指定の関数内は必ず通ってから出る」といった構文はありますでしょうか? 詳しくは、swfを外部から読み込ませていますが、他メニューが押されて他フレームへ移動される際、unloadしてから出るようにしたいです。 ※他フレームに入った際、最初にunloadする、などは試しています。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • suzukaでフレームあたりのActionscriptの量の限界は?

    いつもありがとうございます。 Suzuka・Flash初心者ですがよろしくお願いします。 Suzukaでルートのフレームアクションに2フレーム(コマ) あるものを現在弄っているのですが、 1フレーム目にStopがあり、そして下の方に ――――――――――――――――― // 更新データロード時の動作定義 myXML.onLoad = function() { // 次のフレームへ _root.nextFrame(); }; ――――――――――――――――― というのがあり、これで次の(メイン)フレームに行くんだなぁ、 と理解できるのですが、 この1フレームに他の機能や定義を書きすぎてしまい、 特にIf文が100個以上あって、"構文エラー"は出ないものの、 動作が不審?になってきました。 これはフレームあたりに書く量が多く、処理が重くなっているのでしょうか? {}や()の量が多くて、見栄えも悪く、別のフレームに移した所、 エラーになってしまいました。メインの2フレーム目を3フレーム目に 移してもエラーにならなかったのですが、重い1フレーム目を分解して 2フレーム目に挿入した所、急に動かなくなりました。 Suzukaがフレーム順に動いていると理解しているのですが、定義や 変数の扱いは必要になる箇所までなら、何フレーム目で行っても 一緒なのですよね?それとも私のIf文や定義文が間違って、エラーが 出ているのかも、良く判りません。。一応何をどういう風に移動したのか、書きます。 (1)stop(); (2)変数の処理 (3)―――言語処理―― var sprach = System.capabilities.language ; if(sprach="cs"||"pl"||"ru"||"tr"){ sprach = "en" ; } if (System.capabilities.hasIME) { var sprach = "ja" ;} if (sprach="es"){ ・・・・ }    *この部分が挙動不審 else if (sprach="it"){・・・・ }  *先頭にくるif文が else if (sprach="de"){・・・・ }  *変数sprachの中に勝手に else if (sprach="en"){・・・・ }  *代入される。この例は"es"。 else if (sprach="ja"){・・・・ }  *先頭を入れ替えると値も変わる。 else {・・・・} *上手くsprachが働いていないのかも・・・。 (4)―――言語処理のユーザー関数―― function converterIT(num) {・・・・ return XXX;} function converterDE(num) {・・・・ return XXX;} (5)残りの命令。 (4)だけで130行、残りの項目(1)(2)(3)(5)は250行あって、・・・等の 大部分がIF文で占められており、{}や()の数は間違えていないのの、 (3)の部分で挙動不審となり、他のフレームへ移せないのかな?と 思っています。(4)のユーザー関数は”定義”ですよね?これは切り離して 独立して1フレーム目に持ってきても良いものなのでしょうか? (3)も切り離してメインフレーム(元の2フレーム目)との間に挿入する事 はできるのでしょうか?したのですが、画面が真っ白になります。 SuzukaやFlashでの変数や定義はどこに書いても基本的に同じですよね? 上記のmyXML.onLoadの命令はロード完了前にメインフレームに行かない為の 配慮なんですよね?格フレームに一々Stop();を書く必要はありませんよね? としたら通過(する)したフレームに書かれた変数や関数の定義はFlashは絶対に 見落とさずに実行しているハズなんですよね?

    • ベストアンサー
    • Flash
  • ActionScript3.0 gotoAndPlay(currentFrame-1)が遅いのは何故?

    フレームを2つ用意し、2フレーム目に gotoAndPlay(currentFrame-1) と書くことで 1フレーム目をループさせる手法についてです。 ActionScript2.0では問題なく使えるのですが ActionScript3.0だと、1フレーム目が実行される速度が2.0の半分になってしまいました。 fpsを1にすると、1フレーム目に書いたtrace文が2秒に1回しか表示されません。 通常のフレーム移動はfps通りの速度が出ています。 gotoAndPlay(currentFrame-1) を gotoAndPlay(1) と書いても同じです。 これは3.0の仕様変更によるものなのでしょうか? 原因のわかる方おられましたら、ご教授お願いします。 WindowsXP(32ビット) FlashCS3

    • ベストアンサー
    • Flash
  • 「ActionScriptでディレイみたいな制御」に関して

    こんにちは、初心者ですがお世話になりますm(__)m 使っているのは、Flash MXです(Ver6)主に書籍見ながら触っているところです。 【内容】 2フレーム目から、30フレーム目までモーショントゥイーンをいれてます。 30フレーム目にActionScriptにより、gotoAndPlay(2); で2フレーム目に戻して繰り返してます。 これを、30フレーム目に到達した際、10秒経過してからgotoAndPlay(2) で 移動させたいのですが、なかなかうまくいきません…。 ヒントみたいなので結構ですので、宜しければ返答のほうをお願い致します。

    • ベストアンサー
    • Flash
  • ActionScript3.0フレーム移動について

    お世話になります。 Flash ActionScript3.0で、ボタンをクリックしたら、 階層違いのシーンに移動するという 単純なところでつまずいています。 一番上の階層には、 1フレーム目 フレームラベル "a" 2フレーム目 フレームラベル "b" として、それぞれ this.stop();を書いてあります。 "a""b"には、それぞれムービークリップが配置してあって、 今やりたいことは、"a"に配置してあるムービークリップの 2つ下(中?)の階層にあるボタンをクリックしたら、一番上の階層の"b"に移動して、 "b"に配置してあるムービークリップを表示するようにしたいのです。 "a"のムービークリップのボタンのあるフレームには、 this.stop(); button01.addEventListener(MouseEvent.CLICK,jumpB); function jumpB(event:MouseEvent):void { MovieClip(parent.parent).gotoAndStop("b"); } と書いてみましたが、 [TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。] と怒られます。 試しに MovieClip(stage).gotoAndStop("b"); とか、"b"に配置してあるムービークリップにインスタンス名"b_mc"を与えて MovieClip(parent.parent).b_mc.play(); などと苦し紛れにやってみましたが、すべて同じように怒られます。 どのようにすれば、下の階層から一番上の階層の別フレームに 移動することができますでしょうか? よろしくお願い致します。

  • suzukaのスクリプトで

    suzukaでFlashを制作しております。 プログラムはさっぱりなので検索して出てきたactionscriptを切り貼りして試している状況です。 その1.フレームアクションにおいて、キーを押したら特定のフレームまで移動するスクリプトを入れたいので20フレーム目に以下のスクリプトを入れたのですが、どちらも使えませんでした。具体的な解決策はありますでしょうか。 ●[parse error]とエラーが出る this.stop(); on(keyPress ("a")){ _root.gotoAndPlay(21); } ●キーを押しても何も起こらない this.stop(); if(Key.isDown(Key.RIGHT)){ _root.gotoAndPlay(21); } else if(Key.isDown(Key.LEFT)){ _root.gotoAndPlay(31); } その2.フレームアクションの10フレーム目に this.stop(); buttonA.onPress=function(){ _root.gotoAndPlay(11); }; とボタンのスクリプトを入れると、 どこのフレームまで移動しようが 同じボタンへの命令で上書きするまで このボタンへの効果が持続されてしまうのですが、 押した瞬間に後に命令を引き継がせないスクリプトの記述はありますか?

    • ベストアンサー
    • Flash
  • actionscript3.0について教えてください。

    actionscript3.0について教えてください。 Flash CS4で、マウスオーバーすると画像が表示するものを制作しました。 (全レイヤー、1フレーム目のみで制作していました) そして最近その以前制作したものの直前に別のムービーを入れることになり、 画像のように1フレーム目から4フレーム目まであけました。 そしてもともとあったフレームをすべて5フレーム目に移動しました。 すると、エラーが出るようになりました。 5フレーム目に移動するとエラーが出るようになってしまったので、 試しに2フレーム目、3フレーム目など試しましたが同じくエラーが出ました。 エラーの内容は TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 at test_fla::MainTimeline/frame5() です。 下記のスクリプトを上から二つ目のレイヤーに記述しています。 一番上のレイヤーには、stop();と記述しています。 超初心者のため説明不十分かもしれませんが、宜しくお願いいたします。 /*ボタン1 */ nav1txt_mc.visible = false; nav1_btn.addEventListener(MouseEvent.MOUSE_OVER,onMouseover); function onMouseover(e:MouseEvent):void{ nav1txt_mc.visible = true; nav1txt_mc.gotoAndPlay("nav1txt_mc"); } nav1_btn.addEventListener(MouseEvent.MOUSE_OUT,nondisplay); function nondisplay(e:MouseEvent):void{ nav1txt_mc.visible = false; } /*ボタン2*/ nav2txt_mc.visible = false; nav2_btn.addEventListener(MouseEvent.MOUSE_OVER,onMouseover2); function onMouseover2(e:MouseEvent):void{ nav2txt_mc.visible = true; nav2txt_mc.gotoAndPlay("nav2txt_mc"); } nav2_btn.addEventListener(MouseEvent.MOUSE_OUT,nondisplay2); function nondisplay2(e:MouseEvent):void{ nav2txt_mc.visible = false; } /*ボタン3*/ nav3txt_mc.visible = false; nav3_btn.addEventListener(MouseEvent.MOUSE_OVER,onMouseover3); function onMouseover3(e:MouseEvent):void{ nav3txt_mc.visible = true; nav3txt_mc.gotoAndPlay("nav3txt_mc"); } nav3_btn.addEventListener(MouseEvent.MOUSE_OUT,nondisplay3); function nondisplay3(e:MouseEvent):void{ nav3txt_mc.visible = false; } /*ボタン4*/ nav4txt_mc.visible = false; nav4_btn.addEventListener(MouseEvent.MOUSE_OVER,onMouseover4); function onMouseover4(e:MouseEvent):void{ nav4txt_mc.visible = true; nav4txt_mc.gotoAndPlay("nav4txt_mc"); } nav4_btn.addEventListener(MouseEvent.MOUSE_OUT,nondisplay4); function nondisplay4(e:MouseEvent):void{ nav4txt_mc.visible = false; } 宜しくお願いいたします。

    • ベストアンサー
    • Flash
  • 一定時間停止後フレーム移動

    初心者ですがよろしくお願いします。 ActionScript3.0にて 一定時間後に任意のフレームまで戻るを実行したいのですが 一定時間止まらずにフレームまで戻ってしまいます。 下記の記述は間違ってますか? 一定時間停止の記述法は色々あるみたいですが いくつかやってみたところエラーばっか出て動きませんでした。 この記述だとちゃんと停止するのですが gotoAndPlay(10); を付けると停止しません。 this.stop(); this.iid = setInterval (function (m) { m.play (); clearInterval (m.iid); }, 3000, this); gotoAndPlay(10);

    • ベストアンサー
    • Flash

専門家に質問してみよう