- ベストアンサー
時間を判定するリンクボタン
すみません。どなたか詳しい方お願いします。 Flashをやっているのですが ボタンの領域内に入ったときに時間判定をさせまして マウスポインタが3秒間領域内にあった場合→シーン移動 マウスポインタが2秒以内のうちに領域の外に出た場合→そのまま移動なし このような振り分けをしたいと思っています。 アクションスクリプトでやるのであろうということはわかるのですが プログラムがさっぱりわからなくて 何をどうしたらよいのか困っています。 詳しい方ご回答お願いいたします。 当方の所持していますバージョンはMXです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
> マウスポインタが3秒間領域内にあった場合→シーン移動 > マウスポインタが2秒以内のうちに領域の外に出た場合→そのまま移動なし 空白の1秒がありますね。 例えば 2.5秒 で出た場合は何か違う動作をするのでしょうか? そうだとすると setInterval で簡単に場合分けすることはできませんね。 ですから, ボタンシンボルのインスタンスに書くスクリプトは, こんな感じになると思います↓。 --------------------------------------------- on (rollOver) { // mytime1 に SWF が表示されてからの時間を代入 mytime1 = getTimer(); // 毎フレーム実行 this.onEnterFrame = function() { //mytime1 に rollOver してからの時間を算出 mytime2 = getTimer()-mytime1; // 3000ミリ秒経てば if (mytime2>=3000) { // シーン 2 に移動して gotoAndPlay("シーン 2", 1); // この onEnterFrame を削除 delete this.onEnterFrame; } }; } // on (rollOut, dragOut) { // もし rollOver 時間が 2秒より長かった場合 if (mytime2>2000) { // シーン 3 に移動する gotoAndPlay("シーン 3", 1); } // この onEnterFrame を削除 delete this.onEnterFrame; } --------------------------------------------- ※Flash MX 以降で作成可能なスクリプトです。 ※ステージ上に簡易的に「mytime2」という "変数名" の ダイナミックテキストフィールドを作成して実験されると, 経過時間がわかりやすいと思います。
お礼
とても急いでいましたので 大変助かりました。 >空白の1秒がありますね。 >例えば 2.5秒 で出た場合は何か違う動作をするのでしょうか? こちらは私のミスです。 3秒以内ならというところを2秒以内と書き間違えていました。 しかし、ご回答で細かい説明も書き加えていただいたおかげで 数値を変更するなどして求めているものにすることができました。 条件分岐はif文だから~という感じで 必死にon (rollOver)の中にif文を書いて試していましたが そもそもの考え方が間違っていたことが ご回答から理解することができました。 時間も余裕もなかったところに すばやいご回答、とても助かりました。 ありがとうございました。