• ベストアンサー

geturlでのランダムジャンプについて

初めまして。 FLASH初心者ですので初歩的な質問かもしれませんが、わかる方がいらっしゃいましたら宜しくお願いします。 FLASHムービー終了後、geturlで他のページへジャンプし、その際複数のURLの中からランダムでジャンプするように設定したいのですが、その方法がわからず行き詰まっています。 宜しくお願いします!

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.2

なるほど,#1さん考えましたね, そういう手もありますね? しかし,確かに少し面倒すぎるかと…… ・ ・ ・ 「東京→大阪」 に 「東京→グアム→大阪」 と海外を経由しているような… (スミマセン,口が悪い物で...m(_ _"m)ペコリ ) 私だったら, FLASHムービー終了後,最終フレームに次のように書くと思います。という例です。 ------------------------------------- // 取りあえずストップ stop(); // 変数 url0~9 に URL を登録 url0 = "http://www.google.co.jp/"; url1 = "http://www.yahoo.co.jp/"; url2 = "http://www.goo.ne.jp/"; url3 = "http://search.msn.co.jp/"; url4 = "http://ask.jp/"; url5 = "http://www.infoseek.co.jp/"; url6 = "http://www.altavista.com/"; url7 = "http://verno.ueda.info.waseda.ac.jp/"; url8 = "http://www.fresheye.com/"; url9 = "http://search.biglobe.ne.jp/"; // 変数 n にランダムな 0~9 (10個) までの数を代入 n = Math.floor(Math.random()*10); // url0~9 のどれかの URL に getURL getURL(this["url"+n]); ------------------------------------- 配列は使っていませんが,ほとんど配列のようなものです。 ジャンプ先を別窓にしたいときは,最後の行を getURL(this["url"+n], "_blank"); にしてください。 上のようなスクリプトにすると,if文の分岐は不要になり, URL を変えたいときも手間があまりかかりません。 他にも色々な方法がありますが, 結局,#1の方の書かれている通り  Math.floor(Math.random()*10); か,それの変形は使うことにはなると思います。 Math.floor(Math.random()) の詳細は こちらを参考に↓。 「Math.random() でランダムな整数を取得する方法」 http://www.macromedia.com/jp/support/flash/ts/documents/fl0173.html 次に,[ ] についてです。 getURL(this["url"+n]); の [ ]  は「配列アクセス演算子」と呼ばれるもので, 配列でなくても,変数名を動的に変えることができるので,便利で重宝します。 なかなか,簡単で良い説明をされているサイトが見つかりませんでしたが, 一応参考URL 「ドット演算子と配列アクセス演算子」 http://www.fumiononaka.com/TechNotes/Flash/FN0507001.html 上のスクリプトの場合,  // 変数 n にランダムな 0~9 (10個) までの数を代入  n = Math.floor(Math.random()*10); これで n という勝手に作った変数に 0~9 までのどれかの数がランダムで代入されます。 次に,  // url0~9 のどれかの URL に getURL  getURL(this["url"+n]); ですが, もし,上のランダムの部分で n に例えば 7 という数が代入されたとしたら,  getURL(this["url"+7]); ということになり, さらにつまり,  getURL(this.url7); ということになるわけです。 this.url7 の値は,「http://verno.ueda.info.waseda.ac.jp/」 ですから,この URL にジャンプします。 =============================== 配列アクセス演算子 を使わず, if文 を使われるのでしたら次のようになると思います。 ------------------------------------- // 取りあえずストップ stop(); // 変数 n にランダムな 0~9 までの数を代入 n = Math.floor(Math.random()*10); if (n == 0) { getURL("http://www.google.co.jp/"); } else if (n == 1) { getURL("http://www.yahoo.co.jp/"); } else if (n == 2) { getURL("http://www.goo.ne.jp/"); } else if (n == 3) { getURL("http://search.msn.co.jp/"); } else if (n == 4) { getURL("http://ask.jp/"); } else if (n == 5) { getURL("http://www.infoseek.co.jp/"); } else if (n == 6) { getURL("http://www.altavista.com/"); } else if (n == 7) { getURL("http://verno.ueda.info.waseda.ac.jp/"); } else if (n == 8) { getURL("http://www.fresheye.com/"); } else if (n == 9) { getURL("http://search.biglobe.ne.jp/"); } ------------------------------------- というわけです。

orange007
質問者

お礼

sassakunさん、ありがとうございます! 上記のスクリプトで問題解決できました!! 本当にありがとうございます!!

その他の回答 (1)

  • suzuko
  • ベストアンサー率38% (1112/2922)
回答No.1

最後のフレーム(1)を少し伸ばして、伸ばしたフレーム毎にキーフレーム(2)~(n)を作り、そこにフレームアクションでgeturlをそれぞれ配置します。そしてフレーム(2)~(n)に名前を付け、フレーム(1)にMath.floor(Math.random()*10)で、フレーム(2)~(n)に飛ぶようにされてはどうですか? 少し面倒ですが。

orange007
質問者

お礼

ありがとうございます! 早速やってみようと思います。 その前にMath.randomを使った事が無いので、チャレンジしてみます。 今度はMath.randomの件で質問させて頂くかもしれませんが、宜しくお願いします。 ありがとうございました!

関連するQ&A

専門家に質問してみよう