こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

初めまして。
FLASH初心者ですので初歩的な質問かもしれませんが、わかる方がいらっしゃいましたら宜しくお願いします。

FLASHムービー終了後、geturlで他のページへジャンプし、その際複数のURLの中からランダムでジャンプするように設定したいのですが、その方法がわからず行き詰まっています。
宜しくお願いします!

投稿日時 - 2006-03-20 13:48:47

QNo.2040458

困ってます

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

なるほど,#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)

ANo.1

最後のフレーム(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