• 締切済み

フラッシュバナーのランダム表示について

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

みんなの回答

noname#35109
noname#35109
回答No.1

回答の前に,まず random (4 ) ですが, --Flashドキュメンテーション-- 「random 関数」 http://livedocs.macromedia.com/flash/8_jp/main/00001764.html > random 関数 > random(value:Number) : Number > Flash Player 5 以降では使用しないでください。 > この関数の代わりに Math.random() を使用します。 ということなので,使用をやめましょう。 Flash のバージョンを書かれていませんが, 書かれているスクリプトを見ると, ご使用のバージョンは Flash 5 以上であることは間違いありません。 1 + random (4)  ↓修正↓ Math.floor(Math.random()*4)+1 これに関しては,次のURLを参考にしてみてください。 「Math.random() でランダムな整数を取得する方法」 http://www.adobe.com/jp/support/flash/ts/documents/fl0173.html ただし, Flash Lite 1.1 までの Flash を作りたい場合は, random (4) を使わなければなりません。 Flash Lite 1.1 までだと, 他のスクリプトなども大きく変わりますから, もし,その場合は補足してください。 ※ 以下は,Flash 5 以上をお持ちで,   Flash Player 5 以上用の SWF を作成する場合について回答します。 /////////////////////////////////////////////////////////////////////////// > 4つのファイルを > 1:1:1:3の割合で表示させるなどの場合、 > どういうスクリプトを書けばいいでしょうか? 最初にデータを 1:1:1:3 の割合で用意しておいて, その 1:1:1:3 (=合計6個) のデータの中から,ランダムな1つを選択すれば良いのではないでしょうか。 ---------------------------------------- // 配列 myArr の作成(エレメント 1,2,3,4,4,4) var myArr = new Array(1, 2, 3, 4, 4, 4); // myArr の乱数番目の数 + .swf をロード loadMovie(myArr[Math.floor(Math.random()*6)]+".swf", "AAA"); ---------------------------------------- (AAA は勝手に AAA というインスタンス名のムービークリップということにしました。) > ファイルを差し替えた際にキャッシュが残るので、 > それぞれ固有名詞にしたいのですが、 > その場合の方法も教えてください。 意味がわかりません。 固有名詞にしても,キャッシュは残ると思いますけど…。 よくわかりませんが, 固有名詞にする方法を回答します。 --------------------------------------- // 配列 myArr の作成(エレメント 1,2,3,4,4,4) var myArr = new Array("zou", "kirin", "panda", "uma", "uma", "uma"); // myArr の乱数番目の文字 + .swf をロード loadMovie(myArr[Math.floor(Math.random()*6)]+".swf", "AAA"); --------------------------------------- 2行目は上のスクリプトと全く同じです。 1文字も変えていません。 1行目の配列内のデータの 1~4 を zou~uma に変えただけです。 キャッシュ??? 固有名詞にすればキャッシュが残るのかどうかはよく知りませんが, 「1.swf?q=218036124」 のように,「1.swf」なら「1.swf」の後に,ランダムな意味のない数を加えてみてはいかがでしょうか。 --------------------------------------- // 配列 myArr の作成(エレメント 1,2,3,4,4,4) var myArr = new Array(1, 2, 3, 4, 4, 4); // 変数 hen にランダムな値を代入 var hen = Math.floor(Math.random()*100000); // myArr の乱数番目の文字 + .swf をロード loadMovie(myArr[Math.floor(Math.random()*6)]+".swf" + "?q=" + hen, "AAA"); --------------------------------------- ただし, これはムービープレビューなど, SWF を スタンドアローンプレーヤーで開いての検証はできません。 私の環境では,SWF とともにHTMLをパブリッシュして, そのHTMLを開いて動作確認すると,ちゃんとロードされます。 これは,↓ここの#2の方の回答を参考にしてください。  (私はこのときこの方法を知らなかったので,#1で撃沈しております。) 「質問:環境によって!?外部テキストを最初しか読み込めない」 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1423191  ↑教えて!goo ↓OKWave (同じです) http://okwave.jp/kotaeru.php3?q=1423191 「SWF ファイルのキャッシュを防ぐ方法」 http://www.adobe.com/jp/support/flash/ts/documents/fl0155.html 「skipCache.as」(英文サイト) http://www.shockwave-india.com/blog/actionscript/?asfile=skipCache.as

関連するQ&A