- ベストアンサー
Flashでの秒数指定について教えてください
- インタラクティブなweb広告を作成中の質問です。ゴールまで動くキャラクタがいて、ゴールしたらムービー再生があります。ロールアウト後や放置時にも5秒後にムービークリップを強制再生したいです。
- 過去の質問ではgetTimerやsetIntervalでフレーム移動させる方法があるようですが、rollOut設定ではうまく動かないです。
- Flash MXのバージョン6での質問です。初歩的な質問で申し訳ありません。どうかご教授のほどよろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
大きな疑問が2つあります。 1つめは, ご質問内容とは関係あるかもしれませんし, 直接は関係ないかもしれません。 普通見るWeb広告というのは, クリックすればその広告元のサイトにジャンプしますよね。 クリックしてもジャンプしないWeb広告ってあり得るのでしょうか? ただ見て遊ぶだけの広告ですか… そういうのは見たことがないのでまずその点をスゴク疑問に思いました。 それとも広告というより, スポンサー入りのゲーム(ブログペットのようなもの)と考えれば良いのでしょうか? 2つめは, ご質問内容に関することです。 > ・ロールアウトした後 > ・何もせずそのまま放置した場合 この解釈が何通りもできて,大まかなことしか回答できません。 ---1--- ロールアウトとはどこからロールアウトするのでしょうか? ゲームにボタンみたいなものがあって, そのボタンからロールアウトするという意味なのか, 普通の Web広告 のようにFlash全面が大きなボタンになっていて, そのFlash自体からロールアウトするという意味なのかそこがわかりません。 また,ロールアウトは検知できているのかできていないのか, その辺もよくわかりません。 ボタンが上下に重なっていたら,上のボタンが勝ちますから, 変な場所でロールアウトになったりまったくロールアウト状態にならなかったりします。 _root に flag というインスタンス名のダイナミックテキストでも用意して, ボタンに, --------------------- on (rollOver) { _root.flag.text = "1"; } on (rollOut) { _root.flag.text = "0"; } --------------------- などを書き加えて,ロールアウトが正常に検知されているかいないかも確かめてみてください。 tcace() で確かめても良いですが, できれば,HTML で貼り付いている状態で確認した方が良いと思います。 ---2--- > ・ロールアウトした後 > ・何もせずそのまま放置した場合 とは ロールアウトした後に何もせずそのまま放置した場合, 5秒後に強制再生(ループ再生?)したいのでしょうか。 つまり,プログラム的に日本語で言うと この2は, IF (ロールアウトした後 AND 何もせずそのまま放置した場合) という条件になります。 ---3--- > ・ロールアウトした後 > ・何もせずそのまま放置した場合 とは, ロールアウトした後5秒後に強制再生(ループ再生?)する。 というルールが1つあって,さらに, ロールアウトしないけれど 何もせずそのまま放置した場合5秒後に強制再生(ループ再生?)する。 というルールもあるのでしょうか。 つまり,プログラム的に日本語で言うと この3は IF (ロールアウトした後 OR 何もせずそのまま放置した場合) という条件になります。 上の2と3とでは全くスクリプトや仕組みが変わると思いますよ。 当然,本当のスクリプトは if文 で分岐するときに && か || を切り替えるだけでどちらの場合でもすぐに切り替えられると言うわけではありません。 ですから,2であるなら2であるなりに何か考えなければなりませんし, 3であるのなら3であるなりに何か考えなければなりません。 その前に,1がわかっていないので, そこの部分をまず解決しないと2にも3にも進めませんけどね。 ==================== 単純に, _root に置かれた ボタン または ムービークリップ からロールアウトしたその5秒後に, _root の タイムラインを フレーム1 から再生させたいのでしたら, 次のように作れば良いと思います。 _root(メインムービー)の フレーム1 のスクリプト ---------------------------------- //ユーザー定義関数 replay の定義 function replay() { _root.gotoAndPlay(1); clearInterval(myID); } //ユーザー定義関数 startReplay の定義 function startReplay() { myID = setInterval(replay, 500); } ---------------------------------- _root(メインムービー)の 最終フレーム のスクリプト ---------------------------------- this.stop(); ---------------------------------- 最終フレームにある,ボタン もしくは ムービークリップ に書くスクリプト ---------------------------------- on (rollOver) { clearInterval(_root.myID); } on (rollOut) { _root.startReplay(); } ---------------------------------- それ以上は, 状況や具体的内容がわからないので答えられません。