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

ランダムな画像を表示するFLASHの作成方法

このQ&Aのポイント
  • FLASHを使って、ランダムに切り替わる画像を表示する方法について教えてください。
  • 画像の横にボタンを配置し、マウスオーバーすると対応する画像が表示され、ボタンをクリックすると対応するwebページへジャンプする機能を実装したいです。
  • 現在、ランダムな表示がうまくできておらず困っています。どこが間違っているのか教えていただけないでしょうか?

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

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

以前より内容が具体的になって なんとか全体像がつかめた気がします。 > ランダム関数がよく分からずにやっているからダメなのだと思いますが、 おそらく違いますよ。 関数ではなくて Flash というものの仕様をわかっていらっしゃらないか, もしくは ネットやPCというものを全く意識していらっしゃらないかのどちらかだと思います。 SWF は何も指示しなければ メモリにロードされる端から再生されます。 これをストリーミング再生もしくはプログレッシブ再生と言います。 これのおかげで, どんなに重いファイルであってもフレーム1が軽ければフレーム1はすんなりストレス無く表示させるのです。 すべてのフレームのロードが完了してから再生を始めるという仕様であれば, 数秒から数十分真っ白なままのFlashになってしまう可能性があります。 フレーム1 に配置したものやスクリプトなどが全てロードされて準備されると, フレーム1 に配置した物が表示されるとともにスクリプトも実行されます。 このときはフレーム1しかロードされてません。 いきなり 例えば フレーム1 で gotoAndStop(5); をしても フレーム5 がロードされていなければジャンプしようにもジャンプする場所がありませんから, 変なフレームで墜落したり,真っ白のままFlashの再生が止まってしまいます。 このようなときのために,よく見かける 「Now Loading...」 のようなものが必要になってくるのです。 「Now Loading...」のような演出は全く付けていませんが, スクリプトを無事動作させるには次のような感じにする必要があるということです。 --- _root の フレーム1 に書くスクリプト例 ----------------- // とりあえず再生を停止 stop(); // 1フレーム進む時間毎に毎回実行 this.onEnterFrame = function() { // もし ロードされたバイト数が全バイト数に達すれば if (_root.getBytesLoaded()>=_root.getBytesTotal()) { // 変数 a に 2~7 のランダムな整数を代入 a = Math.ceil(Math.random()*6)+this._currentframe; // そのランダムなフレームにジャンプして停止 gotoAndStop(a); // この this.onEnterFrame を削除 delete this.onEnterFrame; } }; ------------------------------------------------ 上のようなことができるのも, つまり最後のフレームまでロードを待つというスクリプトが実行できるのも, フレーム1 のスクリプトが即実行されるからです。 つまりプログレッシブ再生のおかげです。 Google で「NowLoading Flash」 などと検索すると Now Loading の作り方やサンプルを紹介されているページがヒットします。

noname#127702
質問者

お礼

BlurFiltan様、ご回答ありがとうございます!! 以前も助けていただきましたよね。あのとき教えていただいたことその後もとても役立っています。 教えていただいたものを書き込みましたら無事再生されました。なんとお礼を言えばいいか…。そういうものがあることはうっすら知っていましたが、今回の要因がそれだとは全く考えていませんでした。 >関数ではなくて Flash というものの仕様をわかっていらっしゃらないか,もしくはネットやPCというものを全く意識していらっしゃらないかのどちらかだと思います。 おっしゃる通りです。もっと精進します。 これからnow loadingのようなしかけをプラスしたいと思います。 本当にありがとうございました。前回もどうしようもなかったところを助けていただいて、今回もとても分かりやすく解説していただき、感謝しきれません。 ずっと悩んでいたので、本当に嬉しいです。自分で解決できるよう、もっと勉強していきます。ありがとうございました。

noname#127702
質問者

補足

お礼の欄に書き忘れましたが >以前より内容が具体的になってなんとか全体像がつかめた気がします。 ということは以前も見てくださっていたのですね。ますますありがとうございました。いつも質問ばかりで反省しています。勉強していつかはBlurFiltan様や助けてくださった皆様のような回答者となれるようがんばります。

関連するQ&A

専門家に質問してみよう