- ベストアンサー
ランダムでシーンの移動ができない。
ランダムでシーンの移動をやりたくて、 http://okwave.jp/kotaeru.php3?q=1691219 を参考にスクリプトを組んだのですが、うまくいきません。 書いたスクリプトは、 rand = Math.floor(Math.random()*6); if (rand == 0) { gotoAndPlay("シーン 7", 1); } else if (rand == 1) { gotoAndPlay("シーン 5", 1); } else if (rand == 2) { gotoAndPlay("シーン 6", 1); } else if (rand == 3) { gotoAndPlay("シーン 4", 1); } else if (rand == 4) { gotoAndPlay("シーン 3", 1); } else if (rand == 5) { gotoAndPlay("シーン 2", 1); } です。 (シーン1の一番最初に書きました。swfが読まれたらすぐにランダムが始まる予定です。。。) 現状、ランダムを全く無視して、作ったシーンの順番でシーンの再生が進んでしまいます。 スクリプトに問題があるのでしょうか。。。? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> swfが読まれたらすぐに おそらくここ↑が問題なのでしょう。 こちらの方が参考になるかもしれません↓。 http://okwave.jp/kotaeru.php3?q=2125573 上のURLのスクリプトを使わせてもらうと、 // ///フレーム1 のスクリプト///////////// // とりあえずストップ this.stop(); // 1フレーム進む時間ごとに毎回{ }内を実行 this.onEnterFrame = function() { // もし全てのロードが完了したら if (this.getBytesLoaded()>=this.getBytesTotal()) { rand = Math.floor(Math.random()*6); if (rand == 0) { gotoAndPlay("シーン 7", 1); } else if (rand == 1) { gotoAndPlay("シーン 5", 1); } else if (rand == 2) { gotoAndPlay("シーン 6", 1); } else if (rand == 3) { gotoAndPlay("シーン 4", 1); } else if (rand == 4) { gotoAndPlay("シーン 3", 1); } else if (rand == 5) { gotoAndPlay("シーン 2", 1); } // この onEnterFrame を削除 delete (this.onEnterFrame); // ロード未完了の場合は ストップ を継続 } else { this.stop(); } //////////////////////////////// このようになります。
その他の回答 (2)
- N_moon
- ベストアンサー率33% (1/3)
1です。 > 飛んだ先のシーンにムービークリップは入っていて、 > それを表示させている感じになってます。 おっしゃることが今ひとつよくわからないのですが、シーン1~7にそれぞれムービークリップを配置している、あるいは外部SWFを読み込んでいる、ということですか? いずれにしてもムービークリップにstop();が必用なのはもちろんですが、読み込み元のswfもシーンごとにstop();を入れないと、そのシーンの再生が終わったら次のシーンを再生してしまいますね。 > stop();をつけたら、一つ目のシーンを表示して終わってしまいました。 まず、最初に書いたスクリプト(rand = Math.floor(Math.random()*6);~)はシーン1の何フレームに書いていますか? また、stop();はシーン1の何フレームに書いていますか? その点後確認ください。
補足
stop();は、シーン1には書いていないです。 シーン1は、ランダムのスクリプトのみです。 (そもそもこれがまずいのでしょうか!?^^;)
- N_moon
- ベストアンサー率33% (1/3)
非常に基本的なことなので、違ったらすいませんが… それぞれのシーンの最後のフレームに stop(); は入っていますか? すべてのシーンごとに入ってないと次のシーンに進んでしまうので、まずはそれを確認してみては?
お礼
回答有難う御座います! stop();が入ってるか確認中に気がついたのですが、 飛んだ先のシーンにムービークリップは入っていて、 それを表示させている感じになってます。 ムービークリップにはstop();はついてますが、 それぞれのシーンにはstop();はついていません。 stop();をつけたら、一つ目のシーンを表示して 終わってしまいました。
お礼
有難う御座います!!! 頂いたスクリプトを使ってみたら出来ました! コピペしちゃったので、ちゃんと解読して頑張ります^^; ホント助かりました!!