- ベストアンサー
FlashCS4でAS3.0を使用して画像をランダムに表示させたい
- FlashCS4でAS3.0を使用して画像をランダムに表示させたい場合、ムービーをプレビューした際に、画像が順番に関係なくランダムで表示され、一定時間停止させる方法を知りたいです。
- 現在、画像レイヤーには10フレームごとに画像が配置されており、50フレームで5つの画像が表示されます。各画像にはラベルが付けられ、ASレイヤーにはstop();というスクリプトが書かれています。
- エンターキーを押すと、次の画像が表示され、それぞれの画像の表示後には一定時間停止するようにしたいです。また、表示された画像は順番に関係なくランダムに表示されるようにしたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
いったい何がしたくてどこへ行こうとされてるんだろう??? #1です。 > 「ムービークリップ内の各フレームに画像を置いて > その表示フレームを変える」をしたかったのです。 そうしても見かけの動作は結局同じですよ。 10秒間隔(例) で表示が切り替わることには変わりありませんから問題解決にならないと思います。 > 実はタイムライン上にて別のアニメーションを設定しようと > 考えておりますので それだと 最初のご質問文の > 一定時間停止(例えば10秒間)させた後、 > 再びランダムで表示…10秒間停止後 これと矛盾します。 結局,10秒とかいう秒数は関係なくて, タイムラインのフレームに動作は依存させる必要があるのでしょう? しかし 何度ご質問を読みなおさせてもらってもしたいことがわかりません。 > 画像がタイムラインの順番に関係なくランダムで表示されて、 やっぱり意味不明です。 意味不明なので, 見かけの動作は結局同じですが > 「ムービークリップ内の各フレームに画像を置いて > その表示フレームを変える」 スクリプトを書きます。 たとえば pic_mc というインスタンス名を付けたムービークリップをステージ上に配置して, pic_mc 内の フレーム1 ~5 の各フレームに1枚ずつ5枚の画像を配置します。 root など pic_mc が存在するタイムラインのフレーム1のスクリプト↓。 ---------------------------------------- //初回のみ実行させるためのif文 //もし変数 flg が true でなければ if (!flg) { //変数 flg を true にする var flg:Boolean = true; //関数 randomShowMC を定義 function randomShowMC ():void { //変数 rnd に 1~5 のランダムな整数を代入 var rnd:int = Math.floor(Math.random() * 5) + 1; //「pic_mc」をランダムなフレームで停止 pic_mc.gotoAndStop (rnd); } //関数 randomShowMC を 即実行 randomShowMC (); //10000ミリ秒間隔でイベントを発生するTimerインスタンスを作成 var myTimer:Timer = new Timer(10000); //関数 randomShowMC をイベント発生毎に実行するように設定 myTimer.addEventListener(TimerEvent.TIMER ,function(){randomShowMC()}); //タイマースタート myTimer.start (); //初回のみ実行させるためのif文終了 } ----------------------------------------
その他の回答 (1)
- BlurFiltan
- ベストアンサー率91% (1611/1754)
画像を表示させる方法などたくさんあるので, そこをどうすべきか判断できません。 画像を表示させる方法例とは例えば, 「ムービークリップ内の各フレームに画像を置いてその表示フレームを変える」 とか 「ライブラリの画像をステージ上に呼び出す」 とか 「SWF外に置いたJPEGなどをSWF内に表示させるとか」 とか 「ステージ上の画像の表示順(上下関係の順)を変える」 とか まだまだ色々な方法があると思います。 それをこちらで決めるわけには行かないので答えにくいところです。 これくらいはできた方が良いという簡単な例で1つ書きます。 下の図↓のように 5枚の画像を5つのムービークリップに変換し, その5つのムービークリップに「mc0」~「mc4」までのインスタンス名を付け それら5つのムービークリップが存在するタイムラインのフレームに 次のように書いてみてはいかがでしょうか? --------------------------------------- //関数 randomShowMC を定義 function randomShowMC():void { //変数 i を 0~4 に変えてループ for (var i:int=0; i<5; i++) { //mc0~5を非表示にする this["mc" + i].visible = false; } //変数 rnd に 0~4 のランダムな整数を代入 var rnd:int = Math.floor(Math.random() * 5); //「mc○」のみ表示する this["mc" + rnd].visible = true; } //関数 randomShowMC を 即実行 randomShowMC(); //10000ミリ秒間隔でイベントを発生するTimerインスタンスを作成 var myTimer:Timer = new Timer(10000); //関数 randomShowMC をイベント発生毎に実行するように設定 myTimer.addEventListener(TimerEvent.TIMER ,function(){randomShowMC()}); //タイマースタート myTimer.start(); --------------------------------------- 「5枚の画像をすべて非表示にしておいてランダムな1枚だけを表示させる」 という方法です。 これだと, 座標の指定も簡単にできますし(単に置いた場所になる), 各画像の大きさがまちまちでも下の画像がはみ出て見えるということもないですし, SWF外部やライブラリにまで及ぶ話ではなくなるので 比較的単純で簡単だと思います。
補足
BlurFiltanさん: いつも的確なご回答を有難うございます。とても解り易いです。 確かにBlurFiltanさんの言うように、画像を表示させる方法って色々とあるのですね。余計な手間を掛けてしました。そしてお手数を掛けて本当にすみません…それなのに具体的な表示方法を説明していなくて大変に申し訳ございませんでした。 因みに、図のように「ムービークリップ内の各フレームに画像を置いてその表示フレームを変える」をしたかったのです。 今回のご指導の方法でも試した結果、問題は無いのですが、実はタイムライン上にて別のアニメーションを設定しようと考えておりますので、「ムービークリップ内の各フレームに画像を置いてその表示フレームを変える」の法がよりやりたい表示方法となります。 今回のも、とても勉強になりました。有難うございます。 もしよろしければ「ムービークリップ内の各フレームに画像を置いてその表示フレームを変える」の表示方法。タイムライン上に画像を置いていますフレームのランダムで移動の記述内容のご指導をお願い致します。よろしくお願い致します。
お礼
大変にすみません。自分の説明が悪い為に色々とお手数を掛けてしまいました。 そして、それでもいつもながら的確なご回答有難うございました。 このような内容をしたかったですので、大変に助かりました。 色々と有難うございました。