• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:FLASHでランダムでURLを表示させたいのですが)

FLASHでURLをランダム表示する方法

このQ&Aのポイント
  • FLASH初心者のために、URLをランダムに表示させる方法について教えてください。
  • URLの後にランダムなパラメーターを付けて、その値を表示して飛ぶようにしたいです。
  • いろいろなサイトで試してみましたが、うまくいかず困っています。どうか教えてください。

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

携帯用Flashと書かれましても FlashLite のバージョンがわかりません。 バージョンによって答えは変わると思います(この場合も完璧に変わります)。 on(keyPress"<enter>") を使われていらっしゃるところから見て, 勝手に,FlashLite1.0 または 1.1 のご質問だと決めて, その FlashLite1.0 または 1.1 用SWFをパブリッシュする場合を中心に書きます。 それと, >※ ○○○は3桁の数字がランダムで入ります。 これも, 本当に3桁のランダムな数でよろしいのでしょうか。 よくわからないので,3つの場合について回答します。 ========================================== ◎ 本当に3桁のランダムな数を代入する場合 本当に3桁のランダムな数は, 100以上 999未満 の数になるので, random関数 を使って, ボタンのスクリプトを次のようにすれば良いと思います。 ---------------------------------- on (keyPress "<Enter>") { getURL("http://●●●?rmd=" add (100+random(900))); } ---------------------------------- random関数 と Mathクラスのrandomメソッドとは違います。 例えば, random(5) は 0~4 の5つの整数からランダムな値を返します。 今の(FlashLite2.0以上の)ActionScriptでは Math.floor(Math.random()*5) と同じ意味になります。 random(10) (今の Math.floor(Math.random()*10) ) だと 0~9 の10個の整数からランダムな値を返します。 したがって, 10 + random(10) (今の 10+Math.floor(Math.random()*10) ) では 10~19 の10個の整数からランダムな値を返します。 つまり, 100+random(900) (今の 100+Math.floor(Math.random()*900) ) だと 100~999 の900個の整数からランダムな値を返すことになります。 add は 文字列連結演算子です。 1 + 5 は 6 になりますが, 1 add 5 は "15" になります。 数値加算演算子 と 文字列連結演算子 が分かれているのは結構便利なことが多いです。 今の ActionScript では, 数値加算も文字列連結も区別無く,同じ 「+」 しかないので不便な場合も少しあります。 ========================================== ◎ ランダムな3つの数字を代入する場合 上のものは3桁の数ですから「12」や「5」や「0」などは含みません。 「012」や「005」や「000」など,そういうものも含む場合です。 この場合, ボタンのスクリプトを次のようにすれば良いと思います。 ---------------------------------- on (keyPress "<Enter>") { rand = random(1000); if (rand<=9) { rand = "00" add rand; } else if (rand<=99) { rand = "0" add rand; } getURL("http://●●●?rmd=" add rand); } ---------------------------------- ========================================== ◎ 3桁のランダムな数が選択肢になっている場合 この場合は,例えば, 「007」と「110」と「119」と「777」と「999」という3桁の数があったとして, この中から ランダムにどれかを代入 する場合です。 まず, ボタンが存在するフレーム(_root の フレーム1 など)に, 次のような, 「文字列+連番」の変数名とその値のデータを用意しておきます。 ----------------- para0 = "007"; para1 = "110"; para2 = "119"; para3 = "777"; para4 = "999"; ----------------- そして random関数 で,上の場合 0~4 のランダムな数を取得して, eval関数 でその変数にアクセスするのが一般的です。 ------------------------------------- on (keyPress "<Enter>") { getURL("http://●●●?rmd=" add eval("para" add random(5))); } ------------------------------------- eval関数は今でも(FlashLite2.0以上でも)使えますが,あまり使いません。 また,eval云々の前に, 変数をダラダラ並べるより配列を使うと思います。 さらに, Enter キーが押されることとは全く無関係なボタンを作成するという変なこともないと思います。 これらのことを考えると, 今の(FlashLite2.0以上の)ActionScriptでは, ボタンを作成せずにフレームに次のように書くと思います。 ------------------------------------- // 配列 para の作成 var para:Array = new Array(); para[0] = "007"; para[1] = "110"; para[2] = "119"; para[3] = "777"; para[4] = "999"; // キー監視用にオブジェクトを作成 var myListener:Object = new Object(); // 何かキーが押されたときの動作を定義 myListener.onKeyDown = function() { // もし押されたキーが Enter であれば if (Key.getCode() == Key.ENTER) { trace("http://●●●?rmd="+para[Math.floor(Math.random()*5)]); } }; // オブジェクトをKeyクラスのリスナーとして登録 Key.addListener(myListener); -------------------------------------- ※注意 このスクリプトの場合, FlashLite2.0 以上用のSWFをパブリッシュする設定にするだけでなく, ActionScriptのバージョンも 2.0 に指定してパブリッシュする必要があります。 まだ「場合」が出てきそうな気もしますが, FlashLite1.0 または 1.1 を中心に, FlashLite2.0以上の場合をまじえながら, 3つの場合を回答してみました。  

dolamin
質問者

お礼

ありがとうございます!バージョンはFlashLite1.1を使用しておりましたが無事動作しました。とても丁寧かつ分かりやすい解説で大変勉強になりました。本当にありがとうございます。

関連するQ&A

専門家に質問してみよう