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

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

FLASHでランダムでURLを表示させたいのですが

FLASH初心者です。携帯用のFLASHを作成しているのですが、FLASHムービーの終了後にボタンを押すと他のページに飛ぶようにするために以下のようなスクリプトを書きました。 on(keyPress"<enter>"){ getURL("http://●●●●●●●●"); } ここまではよかったのですが、次にURLのあとにパラメーターを付け、そのパラメーターをランダムで表示させて飛ぶようにさせたいのです。以下のような感じです。 on(keyPress"<enter>"){ getURL("http://●●●●●●●●?rmd=○○○"); } ※ ○○○は3桁の数字がランダムで入ります。 この場合、どのようなスクリプトを書けばいいのでしょうか?いろいろなサイトで調べて試してみたのですがどうしてもうまくいきません。どうか教えてください。

  • Flash
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • 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

  • Flash lite 1.1 で2つのリンク先

    Flash lite 1.1 で只今製作中ですが、1つのswfに2つリンクを設定(ボタンシンボルを2つ置いて。)して、携帯で確認すると、2つ飛び先があるはずが、2つとも同じリンク先へ行ってしまいます。 PC上のローカルでクリックしてみたらちゃんとそれぞれに飛ぶのですが、テストサイトへUPして携帯でチェックすると、1つになってしまいます。上下にボタンを置いているのですが上に設定したほうのURLに下もなってしまいます。 それぞれのスクリプトは以下のようにボタンシンボルに書きました。 1つ目 on (press, keyPress "<Enter>") { getURL("http://○○"); } 2つ目 on (press, keyPress "<Enter>") { getURL("http://△△"); } 自分で調べてもどうしても解からず困っています。 どうかお知恵をお貸しください。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • FLASHでの携帯コンテンツ作成について(ボタン)

    初めて、質問させていただきます FLASHで携帯コンテンツ作成をしております 同じキーを押した場合について教えてください 1つ目のボタンのスクリプト on(press, keyPress"1") { _root.mc1._alpha=50; } 2つ目のボタンのスクリプト on(press, keyPress"1") { getURL("test.htm"); } 問題点 1つ目のボタンをフォーカスしている状態で "1"を押すとgetURL関数が起動してしまう 2つ目のボタンをフォーカスしている状態で 決定キーを押すとgetURL関数が起動してしまう どなたかご教授お願い致します 長文、駄文失礼しました

    • ベストアンサー
    • Flash
  • フラッシュに割り当てたリンクが

    作動しません。 Flash pro 8 で作成したムービーに URLへのリンクをつけようとGET URLスクリプトを 書いたのですが うまく作動しません。 on (release) { getURL("index.php"); } ↑のスクリプトをアクションスクリプト画面で 入力しました。 対象は白の長方形でボタンに変換してあります。 何がおかしいのか色々調べたのですが初心者なもので よくわかりません。 どなたか教えてください

  • 画像がランダムに表示されるFLASHを作りたい

    こんにちは、お世話になります。 下記FLASHを作りたく以前も質問させていただいたのですが、どうしてもうまくいかないところがあり、再度投稿させていただきます。 (1)リロードするたびにランダムで切り替わる画像1~6がある (2)画像の横にボタン1~6があり、マウスオーバーするとそれぞれ画像1、画像2…と表示される (3)ボタン1~6をクリックするとwebページ1~6へジャンプ(リンクさせている) (4)画像1~6をクリックするとwebページ1~6へジャンプ(リンクさせている) まず画像を表示させるために一定区間をループ再生するフレームアクションを画像分(=6個)作りました。 各々frame1、2…とフレームラベル名をつけ、 ボタン1~6には on(rollOver){ this. gotoAndPlay("frame1"); } と記述しています。(ボタン1の例) そして1フレーム目に stop(); button1.onRelease = function(){ getURL("リンク先URL", "_self"); } gazou1に on(release){ getURL("リンク先URL", "_self"); } としています。これにより(2)(3)(4)は実現できています。でも(1)のランダムが全然分かりません。 ループ再生のフレームの前に7フレーム追加し、 1は空白キーフレーム 2はgazou1 3はgazou2… と配置し、フレーム1のアクションに stop(); button1.onRelease = function(){ getURL("リンク先URL", "_self"); } a=Math.ceil(Math.random()*6)+this._currentframe; gotoAndStop(a); と書き加えました。すると、画像が何も表示されないのです。IE7やSafariでは更新ボタンを押せばランダムで画像が現れるのですが、更新ボタンを押さなければ表示されませんし、Operaでは一度ボタンにロールオーバーさせなければ表示できません。 ランダム関数がよく分からずにやっているからダメなのだと思いますが、わからなすぎて何を勉強すればいいのかも分かりません。 とにかく時間がないので困っています。 どこが間違っているのかお教えいただけないでしょうか? 長文で申し訳ありません。どうかよろしくお願いします。

    • ベストアンサー
    • Flash
  • 携帯用Flashでgeturlさせる方法

    お世話になります。似たような質問があったのですが どうしてもできなかったので新たに質問させていただきます。 携帯用のFlashアニメーションをFlashLiteで作成し、 最後にボタンを置いて他のページ(携帯用のページ)へリンクさせようとしています。 ボタンには以下のスクリプトを記述しています。 on (release, keyPress "0") { getURL("目的のURL"); } こうしたところ、PC上のブラウザや、Flashアプリケーション上のプレビューでは正確に動作しリンク先のページへ移動するのですが、 docomoのimode対応htmlシミュレーターや、携帯実機で試すと 移動しないのです。 それほど難しいことをしようとしているわけではないのですが、 何かスクリプトに問題があるのでしょうか。 指定するurlはindex.htmlでなくてはならない等制約があるのでしょうか。 現在指定しているのはパスまで(http://www.abc.ne.jp/)でファイル名まで(abc.php)は指定していません。 何か分かること、間違っていることがあれば教えてください。 どうぞよろしくお願いいたします。

  • getURLでURLが表示されません・・・

    flash8を使用しています。 今、考えている画像は クリックして開けた箱の中にボタンが隠れていて そのボタンをさらにクリックすると あるURLが表示される・・・ というflashを作成したいのですが、 この箱の中のボタンに対する下記の表記では表示されません。 on (release) { getURL("http://***"); } 箱はムービークリップで作成しており、 このムービークリップの中にボタンを作成しているからでしょうか? このボタンをオーバー、ダウンで色を変えているのですが、 この色も反応しません。 どなたか、ご教示願います。 宜しくお願い致します。

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

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

    • ベストアンサー
    • Flash
  • 携帯FLASHのスクリプト

    アクションスクリプト初心者です、質問よろしくお願いいたします。 ランダムでまばたきするなどの簡単なループアニメをflash4(MX)で書き出して、携帯で観覧できるアニメーションを作っています。 アクションスクリプトの勉強も兼ねて、そのループアニメに「1」ボタンを押すと花がフェードインして消える、と言ったボタン対応のアニメーションに挑戦中です。フレーム1でstopさせて、フレーム2にそれぞれインスタンス名をつけたシンボルを設置させています。ボタンにはこんな風に書いてみました↓ on (keyPress "1") { _root.hana.play(); } on (keyPress "2") { _root.hoshi.play(); } on (keyPress "3") { _root.heart.play(); パソコン上ではちゃんと動いてくれたのですが、flash4では対応していないスクリプトがあるようで携帯では動いてくれませんでした。 そこでお教え頂きたいのですが、このようなボタン(キー)に反応したアニメを作る場合flash4(flash lite)ではどのようにスクリプトを書いたらいいのでしょうか…? 携帯向けフラッシュを作成された事のある方、FLASH4に詳しい方、どうかご教授よろしくお願いいたしますm(__)m

    • ベストアンサー
    • Flash
  • フラッシュバナーのランダム表示について

    以下のスクリプトでフラッシュバナーをランダム表示させています。 loadMovie(1 + random (4 ) + ".swf", AAA); このランダム表示の比率を変えたいとき、例えばですが、4つのファイルを 1:1:1:3の割合で表示させるなどの場合、どういうスクリプトを書けばいいでしょうか? また、ファイル名は現在 1.swf、2.swf、3.swf・・ としていますが、ファイルを差し替えた際にキャッシュが残るので、それぞれ固有名詞にしたいのですが、 その場合の方法も教えてください。

  • MCの中でムービーをSTOPさせ、ボタンで次のフレームに

    Flash Lite3.0で、 MCの中でムービーをSTOPさせ、ボタンで次のフレームに進みたいのですが、なぜかSTOP位置でボタンを押しても次のフレームに進んでくれません。 メインで行う場合は進むのですが、メインの時のスクリプトとは、また異なるのでしょうか? 例にすると以下のような感じです。 メイン1フレーム目にあるMCの中で 1フレーム目から5フレームまでムービーが流れ、 5フレーム目にstop(); 5フレーム目ボタンに on (keyPress "<Enter>") { gotoAndPlay(6); } としても5フレーム目で止まったままEnterを押しても6フレーム目に進みません。 説明下手ですが、わかる方がいらっしゃればご回答宜しくお願いします。

専門家に質問してみよう