geturlでのランダムジャンプについて
初めまして。
FLASH初心者ですので初歩的な質問かもしれませんが、わかる方がいらっしゃいましたら宜しくお願いします。
FLASHムービー終了後、geturlで他のページへジャンプし、その際複数のURLの中からランダムでジャンプするように設定したいのですが、その方法がわからず行き詰まっています。
宜しくお願いします!
投稿日時 - 2006-03-20 13:48:47
なるほど,#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/");
}
-------------------------------------
というわけです。
投稿日時 - 2006-03-20 20:28:03
sassakunさん、ありがとうございます!
上記のスクリプトで問題解決できました!!
本当にありがとうございます!!
投稿日時 - 2006-03-22 14:05:16
このQ&Aは役に立ちましたか?
1人が「このQ&Aが役に立った」と投票しています
回答(2)
最後のフレーム(1)を少し伸ばして、伸ばしたフレーム毎にキーフレーム(2)~(n)を作り、そこにフレームアクションでgeturlをそれぞれ配置します。そしてフレーム(2)~(n)に名前を付け、フレーム(1)にMath.floor(Math.random()*10)で、フレーム(2)~(n)に飛ぶようにされてはどうですか?
少し面倒ですが。
投稿日時 - 2006-03-20 16:09:03
ありがとうございます!
早速やってみようと思います。
その前にMath.randomを使った事が無いので、チャレンジしてみます。
今度はMath.randomの件で質問させて頂くかもしれませんが、宜しくお願いします。
ありがとうございました!
投稿日時 - 2006-03-20 17:23:32