dポイントプレゼントキャンペーン実施中!

数秒間のウェイトを入れたいとき、

[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~をサブルーチン化して、呼び出し元のタイムラインに対し
処理させるということは出来ないのでしょうか。

A 回答 (2件)

まず、呼び出し側では、



_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 );
  }
 }

とすれば、正しく動くのではないでしょうか?
呼び出し元のムービークリップを指定してやるわけです。
# 試していないので、自信はないですが。。。
    • good
    • 0
この回答へのお礼

ありがとうございます。教えていただいた方法でうまくいきました。
また、下記のように記述してグローバル関数にしました。

_global.wait = function( start, wait, nowFrame, mcName ){

しかし階層が変わったりすると使い回せないのが難点ですね。^^;
指定したパスから現在位置を探すような命令があればいいんですが。

お礼日時:2002/10/25 01:47

ムービークリップオブジェクトには、



_name, _target

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

あ、そうか。「_target」がありましたね。
呼び出すときに

wait( start, 3000, _currentFrame, _target );

とすることでいきました。

お礼日時:2002/10/26 02:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!