• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:FlashMXでウェイト処理)

FlashMXでウェイト処理

このQ&Aのポイント
  • 数秒間のウェイトを入れたいとき、[frame 1] start = getTimer(); limit = 2000; [frame 3] if( getTimer() > start + limit ){ gotoAndPlay( _currentFrame +1 ); }else{ gotoAndPlay( _currentFrame -1 ); } というようにぐるぐる回しているのですが、頻繁に使う処理なのでサブルーチンにしようと思います。
  • ルートのタイムライン 1フレーム目に function wait( start, limit, nowframe ){ if( getTimer() > start + limit ){ gotoAndPlay( nowframe +1 ); }else{ gotoAndPlay( nowframe -1 ); } } と書きムービークリップの中から wait( start(前のフレームで定義), 2000, _currentFrame ); 呼び出したのですが、goto先がムービークリップの中ではなくルートタイムライン上のフレームになってしまいます。
  • goto~をサブルーチン化して、呼び出し元のタイムラインに対し処理させるということは出来ないのでしょうか。

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

  • ベストアンサー
回答No.1

まず、呼び出し側では、 _root.wait( start(前のフレームで定義), 2000, _currentFrame); としなくては動かないと思います。 # 現状で動いているなら、無視して構いませんが…。 また、ルートに記述する関数は、引数を一つ増やし、  function wait( start, limit, nowframe, mcName){   if( getTimer() > start + limit ){    eval(mcName).gotoAndPlay( nowframe +1 );   }else{    eval(mcName).gotoAndPlay( nowframe -1 );   }  } とすれば、正しく動くのではないでしょうか? 呼び出し元のムービークリップを指定してやるわけです。 # 試していないので、自信はないですが。。。

syg
質問者

お礼

ありがとうございます。教えていただいた方法でうまくいきました。 また、下記のように記述してグローバル関数にしました。 _global.wait = function( start, wait, nowFrame, mcName ){ しかし階層が変わったりすると使い回せないのが難点ですね。^^; 指定したパスから現在位置を探すような命令があればいいんですが。

その他の回答 (1)

回答No.2

ムービークリップオブジェクトには、 _name, _target と言うプロパティがあります。 _nameは、そのムービークリップオブジェクトの名前(インスタンス名)を、 _targetは、そのムービークリップオブジェクトへのパスを示しています。 これらを使ってみてはいかがでしょう?

syg
質問者

お礼

あ、そうか。「_target」がありましたね。 呼び出すときに wait( start, 3000, _currentFrame, _target ); とすることでいきました。

関連するQ&A