• ベストアンサー

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"); どうぞよろしくおねがいします。

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

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

あの… ですから,こちらで回答したのですが↓…。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2266562  ↑教えて!goo  ↓OKWave (同じです) http://okwave.jp/kotaeru.php3?q=2266562 >> 現在、てもとに10個のswfファイルと60個のjpgファイルがあります。 と言う限定的なことでしたら, 書かれているスクリプトはこう変形されます↓。 //////////////////////////////////////////////////// // ※SWF と JPEG ファイルの個数を記入 num_swf = 10; num_jpg = 60; // 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]); ///////////////////////////////////////////////////// ただし,上記の場合,  任意のフォルダ     ├ index.html (index.swf を表示)     ├ index.swf     └ files (フォルダ)        ├ 0.swf        ├ 1.swf        ├  ~略~        ├ 9.swf        ├ 0.jpg        ├ 1.jpg        ├  ~略~        └ 59.jpg というファイル構造になっている場合か, もしくは  任意のフォルダ     ├ index.html (index.swf を表示)     └ files (フォルダ)        ├ index.swf        ├ 0.swf        ├ 1.swf        ├  ~略~        ├ 9.swf        ├ 0.jpg        ├ 1.jpg        ├  ~略~        └ 59.jpg というファイル構造になっている場合です。 詳細は,上記URLを参考にしてください。 ======================== なお,回答には不十分な点も含まれていたり, 思い違いもあると思います。 その場合は, 何度もスレッドを立て直すのではなくて,補足してください。 わかれば補足回答します。 >> これを参考にjpgにも対応するようにすればいいと… ひょっとして,JPEGが表示されないということでしょうか? Flash Payer 7 (Flash MX 2004) までは, プログレッシブJPEGは表示されません。 もし問題点がそこにあるのなら, 用意する JPEG は プログレッシブJPEG ではなくて,普通のJPEGにしてください。

beppoo
質問者

補足

教えてgooのほうで、とても丁寧に答えてくださり、本当にありがとうございます。最初の疑問は全て解決いたしました。 スレッドを2つ立ててしまった件なのですが、今日の朝、最初に立てたスレッドをOkwaveで検索すると、該当するQ&Aは存在しないとの結果が返ってきました。従って、管理側からなんらかの理由で削除されたのだと思い、もう一度ほとんど同じ内容の(この)スレッドを立ててしまった次第です。まさかOkawaveではなくて教えてgooのほうにスレッドが移動しているなんて知りませんでした。このサービスを利用しはじめてまだ短いので、よく理解せずにご迷惑をおかけして申し訳ありませんでした。 さて、補足なのですが、jpgの画像全てにリンクをつけることは可能でしょうか?どうぞ宜しくお願いします。

その他の回答 (4)

noname#35109
noname#35109
回答No.5

No.1~No.4 で回答した者です。 >> できればその下にある補足の質問にも答えてくださると嬉しいです!! ですか… >> FlashPlayer8を持っていない人には、 >> インストールを促すメッセージを表示させようと思うのですが、 >> どうすればよいでしょうか? だいぶん,本題からズレて来たように思いますが…。 最初に書いたのは, 同じ質問について,多重投稿する点に関してです。 http://service.okwave.jp/cs/netiquette/index.html  > 多重投稿(マルチポスト)はしないようにしましょう についてのことですよ。 質問が変われば, 違う質問として出された方が多くの意見を得られると思います。 ---------------------------------------- >> パブリッシュのときにバージョンを変えてやろうと >> 思ったのですが、スクリプトにどのような影響が >> 出るのかわからなかったのでそれはやめようと思いました。 私が,前回のご質問で書いたスクリプトに限っては, Flash Player 5 以上対応です。 今回,回答No.4 で回答したスクリプトは Flash Player 6 以上対応です。 もし他に大したスクリプトを書いていらっしゃらなければ, Flash Player 6 以上だと,どちらのスクリプトも対応しています。 私が回答するときは, なるべく下のバージョンでも対応するようなスクリプトにしようとこころがけています。 一般的に, Flash 8 でしか通用しないActionScriptを書くことはまずないのではないでしょうか。 それより, 線のグラデーションとか,フィルターとか, Flash 8 で登場したグラフィックや文字のエフェクト機能の方に引っかかる要因が多いと思いますよ。 Flash 8 では,そのグラフィックの表現力が劇的に変化しました。 その辺の機能を, 知らず知らずに使っているので, Flash Player 7 以下のバージョンで見えないのです。 新規ドキュメントを作成した時点で, パブリッシュの設定を Flash Player 6 とか 7 にしておくのが一番無難です。 そうしておくと,使用不可能な ActionScript は黄色くなって,見た目だけ制限がかかります。 >> FlashPlayer8を持っていない人には、 >> インストールを促すメッセージを表示させようと思うのですが、 >> どうすればよいでしょうか? 普通は 「Macromedia Web ボタン」 http://www.adobe.com/jp/macromedia/style_guide/buttons/ ここから↑ [Get Macromedia Flash Player] ボタン を貰ってきて, そのボタンに, http://www.adobe.com/shockwave/download/index.cgi?Lang=Japanese&P1_Prod_Version=ShockwaveFlash へのリンクをかけると思います。 だいたいはそれで対処されていると思いますが, Flash の パブリッシュの設定で [HTML]タブを選択して,  □Fashのバージョンを検出 にチェックを入れて, 8.0 にすると,自動的に Flash Player 8 がインストールされていなかった場合の表示が出るHTMLが作成されると思います。 このタグで,Flash をHTMLに貼り付ければいいのではないでしょうか。 とにかく,Flash Player 8 を持っていない以上, Flash Player 8 用のSWFは正常に動作しないわけですから, Flash での対処のしようがありません。 Flash 以外の,JavaScript などの力を借りざるを得ません。 そういうタグが自動でパブリッシュされます。 その他, もっと凝った方法は,この辺りのキットをダウンロードするとか↓, 「Flash Player 検知キット」 http://www.adobe.com/jp/products/flashplayer/download/detection_kit/ この辺りに書いてあることを参考にしてください↓。 「PlayerDetection Kit の使い方」 http://www.adobe.com/jp/devnet/flashplayer/articles/detectionkit.html 私自身は, Flash Player 8 は Windows 95 や,Mac OS 9 を切り離している(未対応)から考えて, 恐くて,大きい所では使用していません。 個人的娯楽サイトであれば, [Get Macromedia Flash Player] ボタン の 表示と, Fashのバージョンを検出 くらいでもしておけば十分だと思います。 大きい所(のようですね)でしたら, Windows 95 や,Mac OS 9 は切り捨てられないと思うので, なんとか,せめて,Flash Player 7 以下にパブリッシュ設定をした上で, Fla ファイルを作成してください(これは単なる私の主観が入った意見です)。

beppoo
質問者

お礼

今回は沢山のことを教えていただきありがとうございました。 今後はもう少しスキルを磨いて、ここでアドバイスができる側になれるぐらいに頑張ります!長い間どうもありがとうございました!!

noname#35109
noname#35109
回答No.4

No.1 ~ No.3 で回答した者です。 「jpgの画像全てにリンクをつける」と言う意味が,わかってきたような気がします。 ランダムで表示されるバナー広告のようなものを, Flash のプログラムで実現したいのでしょうか? (違っていたらすみません。) それだと, SWF(バナー)やJPEG(バナー)など種類が違うファイルがたくさんあって, その表示されたバナーによってリンク先を変える(JPEGごとにリンクを付ける)という意味と,その理由がわかります。 以下は,上記のように勝手に推測した状況による回答です。 ----------------------------------------------- 前回のご質問やこの No.1 の回答では, ActionScript によって,データを自動生成する方法を書きましたが, リンク先の URL までは当然自動生成できませんから, 基本的にはプログラムではなく,人間が手動で用意しなければなりません。 だから,まず, SWF や JPEG のファイル名と, 各そのファイルに対応した一覧表のようなデータを作成しなければなりません。 これは,SWF 内に用意しても良いのですが, バナーのように,リンク先変更や,リンク切れや,新規バナー追加がある場合, SWF の中にデータを用意するよりも, SWF 外にテキストデータを用意して, そのデータを SWF から読み込んで, データ通りに SWF を操作するのが一般てきですから, この方法で行きます。 それと, JPEG にリンクを張るというような発想ではなくて, SWF や JPEG などが表示されたときに, それとは別のボタンにリンクを動的に付ける方が簡単だと思います。 ----------------------------------------- まずファイル構造から。 例として,次のような構造であったとしておきます。  任意のフォルダ     ├ index.html (index.swf を表示)     ├ index.swf     ├ mydata.txt ( ファイルとURL一覧データ)     └ files (フォルダ)        ├ 0.swf        ├ 1.swf        ├ 2.swf        ├ 0.jpg        ├ 1.jpg        ├ 2.jpg        ├ 3.jpg        └ 4.jpg 「mydata.txt」ですが, このテキストファイル内のデータを次のようにしておきます。 num_data=8& &data0=0.swf,http://www.google.co.jp/& &data1=1.swf,http://www.yahoo.co.jp/& &data2=2.swf,http://www.goo.ne.jp/& &data3=0.jpg,http://search.msn.co.jp/& &data4=1.jpg,http://ask.jp/& &data5=2.jpg,http://www.infoseek.co.jp/& &data6=3.jpg,http://search.livedoor.com/& &data7=4.jpg,http://www.archive.org/index.php 次に Flash ですが, 実際はどういう感じになっているかわかりませんので, とりあえず,フレームは1つしかないものとして考えます。 レイヤーを3つ用意します。  □ レイヤー 筆・・|○|  □ レイヤー 筆・・|○|  □ レイヤー 筆・・|○| 一番下のレイヤーを選択してステージ上に,5mmくらい(適当)な四角の塗りを描いて, その塗りをムービークリップに変換します。 このムービークリップは,SWF や JPEG を表示(ロード)する場所になります。 小さなムービークリップができたら, ステージの左上の隅の方に置きます。 このムービークリップの基準点(+印)を起点として,外部ファイルが読み込まれます。 ステージの左上の隅の方に置いたら,下のプロパティインスペクタ(プロパティパネル)で, このムービークリップにインスタンス名を付けます。 この説明例では,「myMC」と付けておきます。 次に下から二番目のレイヤーを選択して, ステージいっぱいに,透明な塗り(アルファ0)の四角を描きます。 この四角をボタンシンボルに変換します。 このボタンにもインスタンス名を付けます。 この説明例では,「myBtn」と付けておきます。 残る一番上のレイヤーはスクリプト専用レイヤーと勝手に決めて, このレイヤーに次のようなスクリプトを書けば, ランダムに SWF や JPEG を表示させて, 「mydata.txt」のデータに基づいたリンクが透明ボタンにかかります。  □ レイヤー 筆・・|○| ← スクリプト  □ レイヤー 筆・・|●| ← myBtn  □ レイヤー 筆・・|●| ← myMC スクリプト専用レイヤーの フレームスクリプトは次のようになります(コピペ可)↓。 ////////////////////////////////////////////////////////////// // ユーザ定義関数 myFunc の定義 function myFunc() { // ファイル数分の整数の乱数を,変数 ransuu にセット ransuu = Math.floor(Math.random()*myLV.num_data); // load_data という配列を作成 load_data = new Array(); // myLV の data? の値を「,」で分割し配列に代入 load_data = myLV["data"+ransuu].split(","); // myMC に load_file[0] をロード _root.myMC.loadMovie("files/"+load_data[0]); // myMC に MovieClip.onRelease メソッドを定義 _root.myBtn.onRelease = function() { getURL(load_data[1], "_blank"); }; } // LoadVarsクラスのインスタンスの作成 myLV = new LoadVars(); // myLV に LoadVars.onLoadメソッドを定義 myLV.onLoad = function(seikou) { // ロード成功の場合 if (seikou) { // 上↑の myFunc関数を実行 _root.myFunc(); } }; // myLV に「mydata.txt」をロード myLV.load("mydata.txt"); ////////////////////////////////////////////////////////////// 作成に関しては以上です。 以下は,部分的な説明です。 ---「mydata.txt」について------------- 最初の num_data=8 ですが,この8は全ファイル数です。 「mydata.txt」の内容から,改行個数を計算させるなどして, ファイル数を求める方法もありますが, もっとスクリプトがややこしくなるので ファイル数を手動で記入する方式にしました。 変数とその値が複数ある場合, data0=aaa&data1=bbb&data2=ccc のように,間に「&」を入れると, いくらでも,変数と値のセットがテキストデータの中に持つことができます。 しかし,これだと,横長くなって, 人間がデータを見たり作成したりするのに都合が悪いので data0=aaa& &data1=bbb& &data2=ccc のようにして改行を入れます。 data0=0.swf,http://www.google.co.jp/ 例えばコレ↑は, data0 という変数に, 0.swf,http://www.google.co.jp/ という値を入れていますが, 「,(カンマ)」より前がファイル名, 「,」より後がリンク先URLです。 値には勝手にそのようなルールを自分で作っておきます。 「mydata.txt」のテキストデータ自体は, Excel などの 関数 や ソート などを利用して, データ作成及びデータ管理をすると楽です。 Excel だと, 例えば A列 を ファイル名,B列をURLとしておきます。 「A1」と「B1」セルは空白セルにしておいて, 「C1」セルに「="num_data="&COUNTA(A:A)&"&"」 という関数を書けば,勝手に A列のデータ数がカウントされ, 「C2」セルには, 「="&data" &ROW(C2)-2 &"="&A2&","&B2&"&"」 と書いて,これを下にダーーーっとドラッグすれば自動で再計算され, ちょうど良いようなデータがC列に作成出来ます。   A     B    C  ----  ----   ="num_data="&COUNTA(A:A)&"&"  0.swf  URL1   ="&data" &ROW(C2)-2 &"="&A2&","&B2&"&"  1.swf  URL2        ↓右下のハンドルを下にドラッグ↓  2.swf  URL3  0.jpg  URL4   …   … C列にデータが作成されると, そのC列を選択して,メモ帳などにコピペ&保存すれば, データの作成や管理編集が簡単です。 Excel でなくてもかまいませんが, データ処理ソフトでデータを作成すると簡単便利です。 また, サーバサイドの言語に詳しい方であれば, Excel などではなく, ファイルアップローダ & URL登録・更新 のできる CGI や PHP を作成して, そのCGI や PHP に「mydata.txt」を作成させて, その「mydata.txt」を Flash から参照させれば, もっと簡単で便利で格好いいかもしれません。 ---スクリプトの説明----------------- スクリプトを書くのはそんなに難しくはありませんが, 説明はちょっと難しいですね…。 大まかな流れは, myLV という LoadVarsクラスのインスタンスの作成して, そこに,「mydata.txt」をロードし, ロード完了&成功次第, ユーザ定義関数 myFunc を実行させています。 LoadVarsクラス に関しては, こちらをご参考に↓。 「LoadVarsオブジェクトを使った外部テキストファイルの読込み」 http://www.fumiononaka.com/TechNotes/Flash/FN0303007.html それで, ユーザ定義関数 myFunc の内容ですが, 変数 ransuu にランダムな,num_data個(8個)の数を代入して, 「mydata.txt」内の, data?(?がランダムな数)のデータを呼び出し, 「,(カンマ)」でデータを分割して配列に代入し, 「,」より前の配列の1番目の要素(ファイル名)を, loadMovie するファイル名に代入し, 「,」より後の配列の2番目の要素(URL)を, getURL する ジャンプ先に代入しています。 どうも説明がうまくできませんが, 以上のような感じです。 なお,LoadVarsクラスのメソッドが, Flash MX 以降でないと使えません。 もしお持ちのバージョンが Flash 5 でしたら,上記スクリプトは使えません。 その場合は, loadVariable でなんとか頑張るしかなくなります。 また, データ作成が簡単なため, 上では「TXT」でデータを作成していますが, もっと複雑なデータになると, 「XML」ファイルを作成して,XMLクラスのメソッドでデータをロード&活用する方法もあります。 以上勝手に想像した状況での勝手な回答です。

beppoo
質問者

お礼

その通りです!実はこのひとつ前の回答の補足欄に書いておいたのですが、まさか推測で自分がやりたいことをあててくださるとは驚きです!本当にありがとうございました!!できればその下にある補足の質問にも答えてくださると嬉しいです!!本当になんだか全部お世話になっちゃって、でもとても勉強になっています!ちなみに僕はFLASH8を使用しています。

noname#35109
noname#35109
回答No.3

たびたびすみません。 No.1 と No.2 で回答した者です。 OKWave からは 「FlashとHTMLの階層が違うために表示できない(と思われる)。」 http://okwave.jp/kotaeru.php3?q=2267727 「FLASHを使って、複数のswfとjpgをランダム表示させたい」 http://okwave.jp/kotaeru.php3?q=2267673 「FLASHを使って、複数のswfとjpgをランダム表示させたい」 http://okwave.jp/kotaeru.php3?q=2266562 この3つは, 「Flash」カテゴリ http://okwave.jp/oshiete.php3?c=564&Keywords=web%A5%C7%A5%B6%A5%A4%A5%CA%A1%BC&xargs=12KPjg1oxj0J6qiLPZJe-QGfaAx119xc6h8b9tGpN_XYQAq2duJeNeXpM. にうまくリンクがかかりませんでしたね。 すみませんが 「教えて!goo」から,リンク先をかくにんしてください↓。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2267673

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

えーと… No.1で回答した者です。 上半分アドバイスで,下半分補足要求です。 つまり,さらに補足要求です。 Flash の前に,OKWave の使用方法なのですが。 ////////////////////////////////////////////////////////////////////////////// >> Okwaveで検索すると、該当するQ&Aは存在しないとの結果が返ってきました。 検索されるデータは遅れます。 ご自分が最近された質問は検索はしないほうが良いですよ。 明日か明後日になれば,検索でヒットする可能性もありますが。 まず, http://okwave.jp/ から入りますよね。 そしたら, ┌────────────────────────── │日本初、最大級のQ&Aサイト │OKWavw 魚(現在だけ) │ │ コミュニティー|アンサリスト|ビジネス|OK CRIP|はじめてガイド │ 教えて!サーチ                  ようこそ beppoo さん |マイページ|ログアウト| │ [       ]を[Q&A 9,286,○○○件から] で [検索する] │ みたいなものが見えませんでしょうか? 上にように  ようこそ beppoo さん |マイページ|ログアウト| もしくは,  ようこそ ゲスト さん |マイページ|ログアウト| とあると思います。 「マイページ」をクリックしてください。 すると,普通は,  会員ID    [      ]  パスワード [      ] を入力するところに行きますから, そこで, 会員ID  と パスワード を入力して 「ログイン」 ボタンをクリックしてください。 すると,マイページにログインできますから, 左の ┌────────── │マイページメニュー ├────────── │ブックマーク │OKWaveコミュニティー │OKWaveアンサリスト │OKWaveビジネス │OKWaveコミュニティー │公開プロフィール設定 │公開プロフィール確認 │関心カテゴリー設定 │関心カテゴリーへの質問一覧 │ブログ設定 │質問/回答履歴   ←ココ! の中から, │質問/回答履歴   ←ココ! をクリックしてください。 すると,beppoo さんが質問された一覧が表示されると思います。 この一覧は,ログインした人本人からしか見えません。 そこに,質問された質問はあると思いますよ。 少なくとも,私の目からは, 「FlashとHTMLの階層が違うために表示できない(と思われる)。」 http://okwave.jp/kotaeru.php3?q=2267727 「FLASHを使って、複数のswfとjpgをランダム表示させたい」 http://okwave.jp/kotaeru.php3?q=2267673 「FLASHを使って、複数のswfとjpgをランダム表示させたい」 http://okwave.jp/kotaeru.php3?q=2266562 この3つは, 「Flash」カテゴリ http://okwave.jp/oshiete.php3?c=564&Keywords=web%A5%C7%A5%B6%A5%A4%A5%CA%A1%BC&xargs=12KPjg1oxj0J6qiLPZJe-QGfaAx119xc6h8b9tGpN_XYQAq2duJeNeXpM. にほぼまとまって見えていますから。 消えていません。 Flash の話からはずれましたが,以上アドバイスです。 //////////////////////////////////////////////////////////////////////// >> さて、補足なのですが、jpgの画像全てにリンクを >> つけることは可能でしょうか?どうぞ宜しくお願いします。 ちょっと意味がわかりませんが…, 1 JPEG 画像 60 枚をランダムではなく   全てリンク表示させる(loadMovieする) 2 ランダムに表示された JPEG ファイルをクリックしたとき   任意のURLにジャンプする 3 上記1でも2でもない 上の1~3のうち,どういう状況のご質問なのでしょうか。 もし 「3 上記1でも2でもない」 の場合は, どういうことを書かれているのか,もう少し詳細におねがいします。

beppoo
質問者

お礼

なんだか本当にいろいろと説明していただいて、ありがとうございます。BlurFiltanさんのおかげで、FLASHのことや、Okwaveのことなど、いろいろとわかってきました。本当に感謝します!

beppoo
質問者

補足

2のランダムに表示された JPEG ファイルをクリックしたとき任意のURLにジャンプする です。 またまた追加補足なのですが、わたしはFlash8で製作していますが、上記で教えて頂いたswfファイルは、flash7以前のプレーヤーでは表示されませんでした。パブリッシュのときにバージョンを変えてやろうと思ったのですが、スクリプトにどのような影響が出るのかわからなかったのでそれはやめようと思いました。そこで、FlashPlayer8を持っていない人には、インストールを促すメッセージを表示させようと思うのですが、どうすればよいでしょうか? 本当にお世話になります。。。

関連するQ&A

専門家に質問してみよう