- ベストアンサー
flashのランダム再生
- flash8で5つのswfをランダムに再生し、5番目までいったら再びランダムに再生する方法について教えてください。
- 外部に置かれている5つのswfを配列にし、ランダムに取り出して再生する方法について教えてください。
- flashでランダム再生を繰り返す方法について教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> ランダムで5つまで再生終わったら > はじめからループという考え方でいいのでしょうか? それは, プログラミングの考え方でなく「この路線行く」という「コンセプト」ですから, 正しいも正しくないもありませんよ。 例えば「朝焼けの写真を見せたあとに山の写真を見せる」 これはコンセプトでですから正しいか正しくないかは決められません。 そのように見せたいのであれば,そのように見せれば良いだけです。 言いかえると, そのように見せたくなければ,そのように見せなければ良いだけです。 しかし一番疑問なのはランダムではなく, 「1.swf」→「2.swf」→…→「5.swf」 と順に見せるときのしくみです。 ここはどうされているのでしょうか? ランダムよりもこの連続再生させるしくみが肝腎の部分だと思いますし, ここにうまく連結させないとランダムを出しても使えないと思います。 ======================================= ◎一応の例 ・ ファイル構造 任意のフォルダ ├ ○○.swf (1~5をロードするSWF) ├ 1.swf ├ 2.swf ├ 3.swf ├ 4.swf └ 5.swf ・ ○○.swf の階層構造 _root └ my_mc(1~5をロードするMC) ・ ○○.swf の _root に書くスクリプト ------------------------------------------ // 1~5 の要素を持つ配列 myArr の作成 myArr = [1, 2, 3, 4, 5]; // 要素をランダムに並べ換える for (i=0; i<myArr.length; i++) { ran = Math.floor(Math.random()*(myArr.length-i)); taihi = myArr[ran+i]; myArr[ran+i] = myArr[i]; myArr[i] = taihi; } // ------ 以下は私が勝手に用意したもの ------ // カウント用の変数 cnt を用意 cnt = 0; // 外部 SWF をロードする関数 loadSWF の定義 function loadSWF() { // my_mc に 乱数番.swf をロード _root.my_mc.loadMovie(myArr[cnt]+".swf"); // cnt が myArr の要素数-1 未満のとき if (cnt<myArr.length-1) { // cnt に 1 を加算 cnt++; } else { // それ以外は cnt を 0 に戻す cnt = 0; } } // 関数 loadSWF を初回実行 loadSWF(); // 関数 loadSWF を 3秒間隔で実行 myID = setInterval(loadSWF, 3000); ------------------------------------------ 最初の部分で, 配列 myArr の要素にランダム順の 1~5 の数を得ています。 例 [2,5,3,1,4] とか [1,2,5,3,4] など その要素番号を順に取りだせば良いのです。 --- 以下は私が勝手に用意したもの --- 以下が,その部分で, 上のスクリプトの場合は,3秒間隔で my_mc に 1~5.swf がランダム順で表示されます。 ここをどうされているのかわからないので,通しでは回答できません。 上からの変形で一番簡単なのは, スクリプトの最後の1行 // 関数 loadSWF を 3秒間隔で実行 myID = setInterval(loadSWF, 3000); この部分を削除して(必ず削除), 読み込まれる側の, 1.swf の最終フレームに空白キーフレームを入れて, その空白キーフレームに, _root.loadSWF(); と書くことでしょうか。 2.swf~5.swf の最終フレームも同じく, 最終フレームに _root.loadSWF(); です。 そうすれば簡単は簡単です。 しかし,実際にはどうしているのか(またはどうしようと考えていらっしゃるのか)はわからないので, この部分はわかりません。 ここもコンセプトの問題だと思います。 =================================== まずは「コンセプト(自分自身でどうしたいのか)」をハッキリさせてください。 そしてプログラミングですが, プログラミングでも ランダム と ロードは別の物です。 キッチリ切りわけて考えて, まずは各パーツをしっかり動作させるようにして, そしてそれから, それらを合体させてうまく動作させるようにしなければなりません。 まず最初に一番大切なことは切りわけだと思いますよ。 切りわけができていれば,質問もシンプルになりますし, 回答もしやすくなりますし, その回答もわかりやすくなります。 また切りわけができたら, その時点で質問するまでもなく答えが出てくる場合も多々多々あると思います。 混沌とした状態では先に進めません。 もし, この回答でランダム&ロードがわかったならば, GAC の方々にもよろしくおねがいします。 おそらくこれと同じ内容の回答だと思います。 『配列を用意して要素をランダムに並べ替える』 そのことを, 最初の回答者の方のように短く端的に書いているか, 私のように長くダラダラと書いているかが違うだけです。 短く端的に書かれてあってもそれだけで十分。大ヒントです。 わかる人にはそれだけで十分わかるのですから↓。 http://www.google.co.jp/search?hl=ja&q=%E9%85%8D%E5%88%97+%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0+Flash
お礼
ありがとうございます!! まだわからないことばかりで 時間がかかってしまいますが 教えていただいた解説を見ながら 理解していきたいと思います。 ありがとうございました