![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
No.1ベストアンサー
- 回答日時:
Flash MX なら、○秒ごとに指定の関数を呼び出す setInterval という関数が使えるところですが、Flash 5 でタイマーの処理をするとなると、少々工夫が必要です。
Flash Player 4 以降から使える getTimer を利用して、このようにしてみてはいかがでしょう。
getTimer はムービーが再生されてからの時間をミリ秒で返します。
変数を2つ用意します。その1つ(仮に before_time とします)に、前のフレームでの getTimer の戻り値を保存しておきます。
すると、今のフレームでの getTimer の戻り値との差で、前のフレームからどのくらい時間が経過したかを知ることができるようになります。
この経過時間の差を、もう1つの変数(仮に lag とします)に蓄積していきます。
getTimer の単位はミリ秒ですので、20秒=20000ミリ秒となります。lag の値が 20000 以上であれば、20秒経過したと見なすことができます。フレームレートの都合上、数ミリ秒の誤差が生じますが、ご容赦ください。
フレームごとの経過時間は、onClipEvent の enterFrame イベントハンドラを利用して計ります。ムービークリップであれば何でもいいのですが、専用のムービークリップを1つ用意(絵は適当でも、なくても構いません)し、これを非表示にしてステージに置いておくといいでしょう。
例えば、timer というムービークリップがあるとします。フレーム3にキーフレームを設定し、 timer をステージのどこかに置きます。アルファを0にするか、onClipEvent の load イベントハンドラを使ってロード直後に _visible プロパティを false にし、非表示にします。
このムービークリップで、時間の計測とメインのタイムラインのフレーム移動の処理を一括して行います。
なお、フレーム4に移動すれば timer の役割は終わりですので、フレーム4以降はステージに置いておく必要はありません。メインのアニメとは別に、専用のレイヤーを作って管理すると、分かりやすくなるかと思います。
timer に設定するスクリプトは、大体、このような感じになります。
(↓ このスクリプトをコピーして利用する場合は、各行の行頭に入っている全角のスペースを、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります)
//初期設定
onClipEvent( load )
{
//前のフレームでの経過時間を保存する変数
//初期値は現時点での経過時間
before_time = getTimer();
//前のフレームとの経過時間の差を管理する変数の初期化
lag = 0;
//自分自身を不可視にする
this._visible = false;
}
//20秒後にフレーム4へジャンプ
onClipEvent( enterFrame )
{
var now_time;
//現フレームでの経過時間を計測
now_time = getTimer();
//前フレームとの経過時間の差を蓄積
lag += now_time - before_time;
//現フレームの経過時間を保存
before_time = now_time;
//蓄積された差が20000以上であれば20秒経ったと見なし、
//メインのタイムラインを動かす
if ( lag >= 20000 )
{
_root.gotoAndPlay( 4 );
}
}
この方法をもう少し工夫すると、○秒ごとに一定の処理を行う、MX で追加された setInterval と同様の処理にもなります。
以前、5秒ごとに処理を行うには・・・という質問で、やはり getTimer を使ったスクリプトを紹介したことがあります。実は、基本的な考え方は全く同じですので、よろしかったら覗いてみて下さい。
参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=666930
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 車検・修理・メンテナンス フレームの歪み修理について 4 2022/05/18 19:20
- JavaScript スマホ上で、左右スワイプで次のページに移動させたいです 2 2022/11/11 17:04
- C言語・C++・C# 【C++】IDirect3DSurfaceのディープコピーは可能ですか? 1 2022/07/06 02:47
- 画像編集・動画編集・音楽編集 動画をディスク作成すると画像が乱れる。 4 2022/06/24 07:49
- 写真・ビデオ iPhoneで撮影した動画の画角をキープした状態で容量を減らす方法。 3 2022/09/25 17:23
- 画像編集・動画編集・音楽編集 動画ファイルの圧縮方法についてはIフレームだのPフレームだの使って圧縮するらしいのですが、音声データ 1 2022/08/26 18:28
- その他(ファッション) スポーツメガネでフレームの色は白などはあり? 2 2022/11/30 07:26
- ドライブ・ストレージ HDDを5台入れられる金属フレームは売っているでしょうか? HDDを5台くらいをスライドさせて入れて 3 2022/05/11 05:43
- その他(自転車) 時々、タイヤの太い自転車を見かけます。タイヤが太いことでどんなメリットがあるんですか? 8 2022/06/19 08:50
- カスタマイズ(バイク) カスタマイズ 1 2022/11/12 01:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フレーム内に移動したい
-
車の運転時のメガネ 縁なし(...
-
連番画像を読み込み、フレーム...
-
インターネットエクスプローラ...
-
imovie9の書き出し時間が長過ぎ...
-
英語で「フレームの右上」
-
Access2010でサブフォームのフ...
-
VBAでIE操作時のLocationURLとURL
-
MC内のフレームをrootにペース...
-
cisco catalystのトラブルシュ...
-
フレームでページ分かれていて...
-
左フレームの選択結果を右フレ...
-
VB6のスクロールバー付きフレー...
-
【C#】wavファイルの複数同時再生
-
メモリに読み込んだ音源のPlayS...
-
オプションボタンを矢印キーで...
-
Flash lite 1.1で、指定範囲内...
-
外部画像を読み込み、ボタンで...
-
Math.ramdom()を特定回数繰り返す
-
Flash lite1.0の計算クイズ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フレーム内に移動したい
-
Access2010でサブフォームのフ...
-
車の運転時のメガネ 縁なし(...
-
2倍速を等速動画に(車載動画)
-
VBで動的に作成したパネルの上...
-
フレームでのResponse.Redirect
-
シーケンス番号の初期値
-
トグルボタンの排他制御でご教...
-
めくれるカードの作成方法
-
KSR2 車体番号
-
ソーラーパネルのアルミフレー...
-
被写体のHSVを正確に取得(webca...
-
gotoAndPlayで特定のフレームま...
-
【C++】IDirect3DSurfaceのディ...
-
オシロスコープのような描写方...
-
ブラウザが揺れる(震動)させ...
-
モーショントゥィーンに関する...
-
富士通FMV-C600のHDD交換
-
ドコモ携帯 N504isのフォトフ...
-
ビルダー2001:フレームの保存
おすすめ情報