FLASHを使って、複数のswfとjpgをランダム表示させたい

このQ&Aのポイント
  • FLASHを使用して、複数のswfファイルとjpgファイルをランダムに表示させる方法について教えてください。
  • 現在、10個程度のswfファイルと60個程度のjpgファイルがあります。それらをJavaScriptを使わずに(基本的にはFLASHで)、アクセスするたびにHTML上でランダム表示させたいと考えています。
  • ベースとなるswfファイルを複数のファイル群と同じ階層において、その上の階層にあるHTMLから読み込む場合、表示がうまくされないという問題が発生しました。この問題を解決する方法も教えていただけると幸いです。
回答を見る
  • ベストアンサー

FLASHを使って、複数のswfとjpgをランダム表示させたい

現在、10個程度のswfファイルと60個程度のjpgファイルがあります。それらをjavascriptを使わずに(基本的にはFLASHで)、アクセスするたびにHTML上でランダム表示させたいと考えています。 これまで、ひとつのswfファイルをベースにして、以下のアクションスクリプトを使って、10個のswfファイルをランダム表示させることには成功しています。 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::: //1~3の整数の乱数を,変数 ransuu にセット ransuu = Math.floor(Math.random()*13)+1; //ムービー内に ransuu+".swf" をロード this.loadMovie(ransuu+".swf"); :::::::::::::::::::::::::::::::::::::::::::::::::::::::::: たぶんこのスクリプトを発展させれば、jpgもランダム表示できるようになると思います。 ランダム表示させたい複数のswfファイルとjpgファイルは同じ階層にあります。HTMLはそのひとつ上の階層にあります。ベースとなるswfファイルは、複数ランダム表示用のファイル群と同じ階層でも良いし、もしくはHTMLと同じ階層でも良いことにします。 どのような方法があるか、教えてください。 *ちなみに、ベースとなるswfファイルを複数ランダム表示用のファイル群と同じ階層において、そのひとつ上の階層にあるHTMLから読み込んだ場合、うまく表示されませんでした。このアクションスクリプトを引用した元のウェブサイトでは、HTMLも、ベースとなるswfファイルも、ランダム表示される複数のファイル群も、全て同じ階層にあるという前提になっていました。

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

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

  • ベストアンサー
noname#35109
noname#35109
回答No.1

ランダムに読み込まれるのは, SWF なのか JPEG なのかは,わからないという条件ですよね。 また,SWF のファイル数も変わる可能性があって, JPEG のファイル数も変わる可能性があるものとして考えます。 ファイル数は変わりますが, とりあえずのサンプルとして, 次のようなファイル構造であった場合のスクリプトを考えます。  任意のフォルダ     ├ index.html (index.swf を表示)     ├ index.swf     └ files (フォルダ)        ├ 0.swf        ├ 1.swf        ├ 2.swf        ├ 0.jpg        ├ 1.jpg        ├ 2.jpg        ├ 3.jpg        └ 4.jpg まず SWF ファイル も JPEG ファイルも 0 という名前から連番にします。 配列を使いますので,0 から始まる連番の方がわかりやすくなります。 SWF が表示されるのか,JPEGが表示されるのかわからない状態, つまりファイル名がごちゃごちゃ混在している状態で, なおかつ均等にランダムを必要とされているのでしょうから, ファイル名のデータベースとなるものを用意して, そのデータの中からランダムなデータを選んで表示するしかないと思います(多分)。 イメージで書くと次のような感じです。  データ = リンゴ,バナナ,イチゴ,レモン,ミカン  乱数 = ランダムな5つの数を代入  → データの 乱数番目 の要素を読み込む このような感じです。 しかし,  データ = 0.swf,1.swf,2.swf,0.jpg,1.jpg … として書いて行くのは非常に面倒なので, データを用意する部分も ActionScript でやってしまいます。 以上のような場合のスクリプトは, こんな感じになります↓(コピペ可能)。 //////////////////////////////////////////////////// // ※SWF と JPEG ファイルの個数を記入 num_swf = 3; num_jpg = 5; // loadFile という配列を作成 load_file = new Array(); // SWFファイルのデータを作成 for (i=0; i<num_swf; i++) { load_file[i] = i+".swf"; } // JPEGファイルのデータを作成 for (var i = 0; i<num_jpg; i++) { load_file[i+num_swf] = i+".jpg"; } // ファイル数分の整数の乱数を,変数 ransuu にセット ransuu = Math.floor(Math.random()*(num_swf+num_jpg)); // ムービー内に ransuu+".swf" をロード this.loadMovie("files/"+load_file[ransuu]); ///////////////////////////////////////////////////// 以上です。 以下は,単に上のスクリプトを説明しているだけです。 長いですが,もしわからない部分があれば,参考にしてください。 --- 各行の説明 -----------------------------  // ※SWF と JPEG ファイルの個数を記入  num_swf = 3;  num_jpg = 5; 上のファイル構造の例で, 読み込むSWFファイルは, 0.swf,1.swf,2.swf この3つですから,num_swf = 3; と設定しておきます。 これは読み込む SWF の数によって変えてください。 読み込むJPEGファイルは, 0.jpg,1.jpg,2.jpg,3.jpg,4.jpg この3つですから,num_jpg = 5; と設定しておきます。 これも読み込む JPEG の数によって変えてください。 この2行の部分だけを変えてもらうと, あとはその数から色々計算するので,他の部分は変える必要がなくなります。 また,変動する可能性のある部分を変数化しておく方がメンテナンスなどで都合がよくなります。 作っているときは良いのですが, 作り終えたあとしばらくすると自分が書いたスクリプトでも何のことかわからなくなるものです。 そんな時,スクリプトをいちいち思い出す必要を無くすためにも,値を変数化しておきます。  // loadFile という配列を作成  load_file = new Array(); 見たまんま, load_file という配列変数オブジェクトを作成しています。 配列の話をしていると,それだけでこの回答欄がいくつも必要になります。 もしわからない場合は,次の URL などを参考にしてください。 「配列とは?Array」 http://www.1art.jp/flash/le/lesson34/lesson34.htm  // SWFファイルのデータを作成  for (i=0; i<num_swf; i++) {    load_file[i] = i+".swf";  } for文で配列の要素に,SWFのファイル名データを代入しています。 for文 を使わなければ, l oad_file[0] = 0+".swf"; load_file[1] = 1+".swf"; load_file[2] = 2+".swf"; と書いているのと同じです。 これで,配列データはどうなるかと言うと,  load_file = ["0.swf", "1.swf", "2.swf"]; こうなります。 しかし, for文 を使わず羅列した場合は, データの数分の行が必要となり書くのが面倒ですし, 配列そのものを書く場合も,横にやたら長くなり,また面倒です。 つまり,数が変わるたびに行や書くことが増減してしまいます。 労力やミスなどを防ぐためにも,for文 などでループさせる方が良いです。 「繰り返し文 for - FLASHアクションスクリプト入門編」 http://isvalid.jp/actionscriptLab/ASlesson/actionsctipt_for.html  // JPEGファイルのデータを作成  for (var i = 0; i<num_jpg; i++) {    load_file[i+num_swf] = i+".jpg";  } これも同じです。 SWFファイル名データ要素(エレメント)の後に,JPEGファイル名データ要素を羅列するので, load_file[i+num_swf] にしています。 JPEG は 60 もあるのですから,絶対に for文 などループで処理するべきです。 JPEG は 60 あっても,1000 あっても,この3行で済みます。  // ファイル数分の整数の乱数を,変数 ransuu にセット  ransuu = Math.floor(Math.random()*(num_swf+num_jpg)); これは見たままですね。 最初に定義(設定)した数は,上の場合, num_swf = 3; num_jpg = 5; ですから,その場合, num_swf + num_jpg は 3+5=8です。 したがって,  ransuu = Math.floor(Math.random()*8); となり,0~7まで8つの整数の乱数が ransuu に入ります。  // ムービー内に ransuu+".swf" をロード  this.loadMovie("files/"+load_file[ransuu]); このスクリプトの load_file[ransuu] は, したがって load_file[0~7のいずれか] となります。 つまり, 0.swf ~ 4.jpg のうちいずれかのファイル名がここに来ます。  this.loadMovie("files/"+ ( 0.swf ~ 4.jpg のうちいずれか ) ); 仮に ransuu に 7 が入った場合, load_file=["0.swf","1.swf","2.swf","0.jpg","1.jpg","2.jpg","3.jpg","4.jpg"] このうち,0から始まる7番目, つまり 普通の日本人が言う 8 番目 の要素データが入りますから, この部分は "3.jpg" となります。 したがってこの行は,  this.loadMovie("files/"+ "3.jpg"); となり,つまり,  this.loadMovie("files/3.jpg"); となります。 外部ファイルへのパスの話になりますが, loadMovie や getURL など,Flash 外部へのパスは SWFから見たパスではなく,SWFを貼り付けたHTMLから見たパスになります。 index.html から,例えば 3.jpg を見ると,上の場合,  任意のフォルダ     ├ index.html (index.swf を表示)     └ files (フォルダ)        └ 3.jpg ですから, files というフォルダの中に 3.jpg があります。 したがって, "files/3.jpg" となります。 もちろん "./files/3.jpg" でもかまいません。 つまり,  this.loadMovie("./files/"+load_file[ransuu]); でも良いです。 その辺は HTML のルールと同じです。 「MovieClip.loadMovieで外部ファイルを読込む」 http://www.fumiononaka.com/TechNotes/Flash/FN0307007.html  ~引用~  > this.my_mc.loadMovie("test.swf");  >  > 読込む外部ファイルのURLは、  > 絶対パスまたは相対パスで指定します。  > 相対パスを使う場合は、FlashのSWFファイルではなく、  > SWFファイルの埋込まれたHTMLファイルが  > パスの起点になります。  > 記のサンプルスクリプトは、相対パスの例です。 見るまでのことはないと思いますが, 一応,HTMLでのパスの指定方法です↓。 「リンク - 超初心者のためのホームページ作成講座」 http://park16.wakwak.com/~html-css/link_koza/linkkoza.html

beppoo
質問者

お礼

ありがとうございました!

関連するQ&A

  • FLASHを使って、複数のswfとjpgをランダム表示させたい

    現在、てもとに10個のswfファイルと60個のjpgファイルがあります。 それらを、ひとつのswfファイルをベースにしてランダムに表示させたいと考えています。 ベースとなるswfを置くHTMLは、それらの画像ファイル群のひとつ上の階層にあります。 swfファイルをランダムに表示するアクションスクリプトは以下のようにできました。これを参考にjpgにも対応するようにすればいいと思うのです。 //1~3の整数の乱数を,変数 ransuu にセット ransuu = Math.floor(Math.random()*13)+1; //ムービー内に ransuu+".swf" をロード this.loadMovie(ransuu+".swf"); どうぞよろしくおねがいします。

    • ベストアンサー
    • Flash
  • FlashとHTMLの階層が違うために表示できない(と思われる)。

    複数のswfファイルをランダム表示するために、ひとつのswfファイルをベースにして、そこに以下のようなアクションスクリプトを記述することによって動作させることができました。 //1~3の整数の乱数を,変数 ransuu にセット ransuu = Math.floor(Math.random()*13)+1; //ムービー内に ransuu+".swf" をロード this.loadMovie(ransuu+".swf"); しかし、上記のアクションスクリプトは、ベースとなるswfファイルと、それを設置するHTMLと、ランダム表示させるswfファイル群が全て同じ階層にあるということを前提にして書かれているようです。従って、HTMLをひとつ上の階層に設置し、そこからベースとなるswfファイルを設置しても、表示されません。FlashとHTMLの階層が違う場合には、どのように上記のアクションスクリプトを変更すればよいのかを教えてください。

    • ベストアンサー
    • Flash
  • 複数のswfファイルをランダム表示させたい

    複数のswfファイルバナーがあって、トップページに これらのバナーをランダム表示させたくて、ランダム 表示用のswfファイルを用意したのですが、どうしても 表示できません。 ランダム表示用swfファイルの1フレーム目には、 下記の通りASを書いてみました。 swfList= new Array("aaa.swf","bbb.swf","ccc.swf"); listLength=swfList.length; rndNum= Math.floor(Math.random()*listLength); loadMovie(swfList[rndNum],"_root"); このswfファイルも、他のバナー用aaa,bbb,ccc.swfファイルも 同じフォルダ内に保存しています。 ちなみに当方Flash MX2004 professional使用です。 どこが間違っているか、どなたがご教授下さいませ。

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

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

  • Flashで背景をランダムに変えたいんですが‥‥

    外部のSWFファイルを読み込んで、それをランダムに表示させたいんですがどうも上手くいきません。 Flashがバージョン5のため、画像のみを貼りつけたSWFファイルを読み込ませて、それを背景に使おうとしています。 ホームページに載せて、見るたびに背景を変えようという狙いです。 それで、色々と調べてみてスクリプトもいじって外部ファイルを読み込んで表示はしてくれるようになったんですが、表示の一番上に来てしまってメニューのボタンなんかが隠れてしまうのです。 これが、書いてあるスクリプトです。 onClipEvent (load) { no = Math.floor(Math.random()*3)+1; loadMovieNum("haikei"+no+".swf", 0); } スクリプトにはどうも分からない点が多いので、細かく説明していただけるとありがたいです。 修正点や、「こういうやり方もある」っていうのがありましたら、ご指導の方をよろしくお願いします。

  • .swf のランダム表示の html記述について。

    初めて質問させていただきます。 私は、FLASH初心者で、HTMLが理解できる程度ですので、どう記述すれば良いかを教えていただければ助かります。どうぞよろしくお願いします。 5つの.swf(200x55のa.swf,b.swf,c.swf,d.swf,e.swf)を作りました。 この.swfを、ページを読み込む(あるいは更新する)度にランダムに選択し表示させたいのです。 こちらで過去のQ&Aで<EMBED>の記述は参考にして、Firefoxでのランダム表示は出来ました。HTMLの記述は以下のとおりです。 =============================================================== <html> <head> <title></title> <style type="text/css"> <!-- --> </style> </head> <body> <script language="JavaScript"> <!-- swfFiles = new Array("a.swf","b.swf","c.swf","d.swf","e.swf"); document.write('<embed src="' + swfFiles[Math.floor(Math.random()*5)] + '" quality="high" bgcolor="#000000" width="200" height="55">'); //--> </script> </body> </html> ================================================================ この記述でFirefoxでは表示されましたが、InternetExplorer・Operaなど主要なブラウザでも表示させたいのです。 どうかどなたか教えてください。できれば、上の記述内容に直接書き加えた形で教えていただけると助かります。 どうぞ、よろしくお願いします。

  • 外部画像jpg又はswfの表示について

    はじめまして、こんにちは。 Flash初心者です。 [使用環境] Flash MX 2004 Win 2000 [質問] 1フレーム目にはslide1.○○○、2フレーム目にはslide2.○○○、 3フレーム目にはslide3.○○○といったふうに画像をnextボタンと backボタンを使って切り替わるようなものを作っています。  ※○○○にはjpg又はswfが入ります。 +――――――――――――――――――+ | +―――――――+  +――――+ | | |           |  |back   | | | |           |  +――――+ | | | picture     |            | | |           |  +――――+ | | |           |  |next    | | | +―――――――+  +――――+ | +――――――――――――――――――+ ・外部画像を読み込んで表示するには「 picture.loadMovie("slide1.jpg"); 」又は、  「 picture.loadMovie("slide1.swf"); 」で表示できます。 ・slide1はjpgかswfのどちらかのファイルしかなく、shile2、slide3も同様です。 ・1フレーム目がswfの場合「 picture.loadMovie("slide1.swf"); 」、  2フレーム目がjpgの場合「 picture.loadMovie("slide2.jpg"); 」  というように拡張子を指定してスクリプトを書くのではなく、  条件式を使って画像を表示するにはどうすればよいのでしょうか。 ・もしくは、エラーを無視して次の行へいくというプログラムはあるのでしょうか。 どなたか分かるようでございましたらご教示下さい。お願いします。

    • ベストアンサー
    • Flash
  • FLASHのランダム表示とサイズ指定

    Action scriptがいまいちわからないのでjavascriptでFLASH画像をランダム表示していますがサイズの指定ができません。 全て同じサイズのFLASHですが表示サイズが半分以下になってしまいます。 ヘッダに下記のスクリプトを書き、 ↓ <SCRIPT TYPE="text/javascript"> n=parseInt(Math.random() * 3); var flashurl = [ "1.swf","2.swf","3.swf ]; document.write("<OBJECT CLSID=xxxx SRC='"+flashurl[n]+"' ...>"); document.write("</OBJECT>"); </SCRIPT> 表示させたい場所に下記のように書いています。 ↓ <script language="javascript"> var flashurl = ["1.swf", "2.swf", "3.swf",]; flashurl = flashurl[Math.floor(Math.random() * flashurl.length)]; document.write('<object data="' + flashurl + '" type="application/x-shockwave-flash">'); document.write('<param value="' + flashurl + '" name="movie" /></object>'); </script> CSSレイアウトでページを作っている事は関係ないでしょうか。スクリプト初心者なのでよろしくお願い致します。

  • 外部画像の読み込み→表示で

    Flash MX でアクションスクリプトを記述しました。 this.myPhoto.loadMovie("/image1.jpg"); インスタンス名:myPhoto 画像ファイル名:image1.jpg (画像ファイルimage1.jpgはswfファイルと同じ階層) バブリッシュして htmlファイルと swfファイルを作成しましたが、htmlでは画像が表示されません。 swfファイルをFlash Player再生すると画像は表示されています。 this.myPhoto.loadMovie("/image1.jpg"); を this.myPhoto.loadMovie("image1.jpg"); と『/』を除いて記述すると、 今度は htmlファイルでは画像が表示されますが、swfファイルはFlash Playerで再生しても表示されません。 htmlでもswfでも表示するようには出来ないものでしょうか? OS: windowsXP SP2 IE: Ver6.0 FLASH: Flash MX アクションスクリプトの初心者で質問の仕方さえ要領を得てないと思いますがご勘弁ください。 不明の点はご指摘ください。

    • ベストアンサー
    • Flash
  • 外部swf(jpg)に対するLoading表示

    容量の大きいswfファイルを作る時、ムービー全体の容量を計算し表示させるプリローダ(Now Loading)をつける方法は知っているのですが、 loadMovie();を使って外部swf(jpg)を読み出す際、 それ(複数の場合はそれぞれ)にプリローダをつける方法がいまいちよくわかりません。ご存知の方いらっしゃいましたら、ぜひ教えていただけますでしょうか?

    • ベストアンサー
    • Flash

専門家に質問してみよう