JPGファイルのローディングに関する疑問と解決策について

このQ&Aのポイント
  • JPGファイルのローディングに時間がかかる問題について、解決策を探しています。
  • 現在の状況では、次のJPGファイルをロードすると同時に現在のファイルが消えてしまい、画面がブランクになります。
  • 次のJPGファイルが完全にロードされるまで、現在のファイルを表示し続ける方法を教えてください。
回答を見る
  • ベストアンサー

JPGファイルのローディングの際に...

宜しくお願いします。 透明なムービークリップを画面に配置し、同じく画面内に配置された幾つかのボタンを押す毎にそれぞれに指定してあるJPGファイルがそのムービークリップ内にロードされる、と言うものを作っています。 -------------------------------------------------------- (ムービークリップで作った)ボタンにon (press)で『外部ムービークリップをロード』をビヘイビアから選択し、特定のJPGファイルを指定しています。 -------------------------------------------------------- ここからが質問です。 まず、JPGファイルをロードするのに少し時間が掛かりますので、次のボタンをクリックして指定されたJPGファイルがMCに現れるまで、今MC上にあるJPGファイルが、次のJPGファイルが完全にロードされMC上に出て来たら消えるようにしたいのです。 現在の状況は、次のボタンをクリックすると同時に今見えているJPGファイルが消えてしまい、次のボタンに指定してあるJPGファイルがMC上に現れるまでブランクになってしまうのでそれを避けたいのです。 まず、そんなに重くないJPGファイルで何故、数秒掛かってしまうのかと言う疑問もあるのですが。 完全に次のJPGファイルがロードされるまで、今見えているJPGファイルをMC上に置いておく、という設定はどうしたら良いでしょうか。 回答お願いします。

  • vieux
  • お礼率81% (13/16)
  • Flash
  • 回答数3
  • ありがとう数5

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

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

例えばムービークリップに何か絵を描いておいて画像を読み込むと、読み込みの間、この絵が消えてムービークリップがある場所は空白になってしまいます。 つまり、ムービークリップに画像を読み込むと、読み込みの命令を出した次の瞬間に前の絵は破棄されて消えるということです。 前の画像を表示したまま次の画像を読み込むには、ムービークリップが最低でも2つは必要です。 ムービークリップを2つ、重ねて用意しておきます。 今、画像を表示しているムービークリップの相方に次の画像を読み込み、読み込みが済んだら前の画像(を表示しているムービークリップ)を消して、今回絵を読み込んだ方のムービークリップを表示します。 次の読み込みも同様に、今表示しているムービークリップの相方に読み込み、先に表示した方は非表示にします。 このようなスクリプトはビヘイビアでは作りにくいので、1から自分でスクリプトを書きます。 ビヘイビアで作られたスクリプトをとりあえずコメントにするか、別の fla ファイルを作って試してみてください。 ------------------------------------------------------------------ ステージに、画像を読み込むためのムービークリップを2つ、上下に重ね合わせた状態で配置してください。 レイヤーを分けて配置しておくと扱いやすくなります。 この2つのムービークリップにインスタンス名を付けます。 名前は、共通する名前+ 0 または 1 で付けます。 例えば共通の名前を” clip ”とするなら、clip0 と clip1 というように付けます。上・下のどちらを 0 にするかは動作に関係ありませんので、お好みで決めてください。 0 と 1 を使うところに、カラクリのタネがあります ^^; 読み込み用のボタンも、ステージに配置してインスタンス名を付けてください。 ここでは仮に、load_btn1 ~ 2 と付けたとします。 以上で準備は完了です。 次はスクリプトを書きます。 ******************************* スクリプトは全て、メインのタイムラインのフレームに書きます。 (↓各行頭に全角のスペースが入っています。コピーする際は、全て半角のスペースかタブに置き換えてください)  /////////////////////////////////////////////////////////  //初期設定  /////////////////////////////////////////////////////////  //現在、画像を読み込める方のムービークリップの番号を管理  //値は0または1  current_clip = 0;  //画像を表示するムービークリップに共通する名前を保持  clip_name = "clip";  //画像表示用のムービークリップを非表示にしておく  _root[ clip_name + "0" ]._visible = false;  _root[ clip_name + "1" ]._visible = false;  //読み込み用のオブジェクトを作成  load_obj = new MovieClipLoader();  //読み込み終了時の処理  load_obj.onLoadInit = function()  {   //今回読み込んだムービークリップを表示し、   //前回画像を表示していたムービークリップを非表示にする   _root[ clip_name + current_clip ]._visible = true;   _root[ clip_name + ( current_clip ^ 1 ) ]._visible = false;   //次の読み込みのために   //ムービークリップの番号を反転しておく   current_clip ^= 1;  };  /////////////////////////////////////////////////////////  //ボタンがクリックされた時、画像を読み込む  /////////////////////////////////////////////////////////  load_btn1.onRelease = function()  {   //読み込める方のムービークリップに画像を読み込む   load_obj.loadClip( "○○○.jpg" , _root[ clip_name + current_clip ] );  };  load_btn2.onRelease = function()  {   //読み込める方のムービークリップに画像を読み込む   load_obj.loadClip( "△△△.jpg" , _root[ clip_name + current_clip ] );  };  /*以下、ボタンの数だけ同様に定義する*/ ムービークリップの共通の名前を” clip ”ではない名前にした場合は、  //画像を表示するムービークリップに共通する名前を保持  clip_name = "clip"; ↑この部分を書き換えていただくと変更できます。 ******************************* ビヘイビアで記述されるスクリプトでは loadMovie というアクションで画像が読み込まれますが、Flash Player 7(作成ツールは Flash MX 2004 )からは、より高機能な MovieClipLoader というクラスを利用できるようになりました。 今回の件は”読み込みが済んだ時に”との判断が必要ですから、読み込みの状況を把握しやすい MovieClipLoader を利用しています。 MovieClipLoader は Flash Player 6 以前のバージョンでパブリッシュする場合は使えませんので、ご注意ください。 MovieClipLoader は、読み込みのいろいろな状況に応じてイベントを発行して知らせてくれます。 イベントが起きた時に行う処理を予め定義しておくと、何件の読み込みを実行しても同様の処理をしてくれるようになります。 今回は”読み込みが済んだらムービークリップを切り替える”ので、読み込みが完了した時に発行される” onLoadInit ”イベントを利用します。 ******************************* current_clip ^ 1 や current_clip ^= 1 という演算が、ちょっと見慣れないものかも知れません。 「 ^ 」はビット演算を行う演算子の1つで、排他的論理和( XOR )と呼ばれるものです。 current_clip ^ 1 は、変数 current_clip に 0 が入っている時は 1 、1 が入っている時は逆に 0 になります。そういう”おまじない”だと思ってくださっても構いません。 current_clip ^= 1 は a += 2 の「 += 」演算子などと同じで、current_clip ^ 1 の結果を current_clip の新しい値にする、という意味です。 今回の例で言いますと、最初はムービークリップ” clip0 ”に画像を読み込みます。 この clip0 に続けて次の画像を読み込むと先に読み込んだ画像が消えてしまいますから、相方である clip1 に次の画像を読み込むようにします。 clip1 に画像が読み込まれたら、先に表示していた clip0 の方は非表示にしておきます。 この後、再度違う画像を読み込むとします。 現在表示されているのは clip1 ですから、次の画像は非表示になっている clip0 に読み込みます。 つまり、clip0 を表示している時は clip1 に、clip1 を表示している時は clip0 に読み込む・・・という動作を交互に繰り返すわけです。 ムービークリップの名前に 0 と 1 を使って付けておくと、先の XOR の特徴を利用して、if 文でいちいち判定することなく2つのムービークリップを切り替えることができます。 現在表示している方のムービークリップの番号が 0 と 1 のどちらであるかだけ分かれば、この番号と 1 で XOR 演算をしてみることで相方の番号も判明します。 上記のスクリプトでは、現在画像を読み込める方の番号を” current_clip ”という変数で管理しています。 この値をもとにして、次に画像を読み込むムービークリップやその相方を参照します。 1回の読み込みが終わり、clip0 と clip1 が入れ替わるたびに current_clip の値を反転しておきます。 つまり、1回の読み込みが終わるごとに current_clip には 0 と 1 が交互に入ります。 従って、同じ _root[ clip_name + current_clip ] という記述でも、ある時は clip0 、次は clip1 と、2つのムービークリップを交互に参照できるというわけです。 ビット演算にはいろいろな種類があります。 ActionScript の解説サイトではあまり見かけないかもしれませんが、他のプログラミングの講座ではよく使われるものです。 ”ビット”演算というだけあって2進数と関係があり、少々とっつきにくいところが難点ですけれど、いろいろと便利な演算です。機会がありましたら研究してみてください。 ******************************* なお、読み込み中に他のボタンがクリックされると、同じムービークリップに続けて画像が読み込まれるために前の画像が消えてしまいます。 対策はいくつか考えられますが、確実なのは読み込みの間はそれぞれのボタンの enabled プロパティを false に書き換え、読み込みが完了した時点で true に戻して、連続してクリックできないようにする方法だと思います。 紙面の都合上、この処理は割愛させていただきました。 余裕がありましたら改良してみてください。

vieux
質問者

お礼

丁寧な説明、ありがとうございました。 早速試してみます! 『スクリプトは全て、メインのタイムラインのフレームに書きます。』 との事ですが、教えて頂いたスクリプトはどのフレームに書き込めば良いのでしょうか?ムービークリップを教えて頂いた通り2つのレイヤーに分けて作成してみました。そのムービークリップがあるフレームでしょうか?それとも、アクション用のレイヤーを作ってあるのですが、そのフレームでしょうか? 重ねて質問申し訳ありません。 大変お世話になってます。。。

vieux
質問者

補足

DPE様。 今早速トライしてみました。 ムービークリップのインスタンスの名前は例に書かれていた通りに変更し、ボタンのインスタンス名はbtn1~5としました(5つのボタンがあります)。教えて頂いたスクリプトを(作成した)アクション用レイヤーのフレームにコピーペーストしてみました。そしてボタンのインスタンス名もキチンと書き直しました。 そして、テストムービーをしてみましたが... 何を押しても、何も出て来ない、という状況です... きっと何処かがおかしいのでしょうが... フレームに書き込んだアクションスクリプトは以下の通りです。 ----------------------------------------------------------------------------- //現在、画像を読み込める方のムービークリップの番号を管理 //値は0または1 current_clip = 0; //画像を表示するムービークリップに共通する名前を保持 clip_name = "clip"; //画像表示用のムービークリップを非表示にしておく _root[ clip_name + "0" ]._visible = false; _root[ clip_name + "1" ]._visible = false; //読み込み用のオブジェクトを作成 load_obj = new MovieClipLoader(); //読み込み終了時の処理 load_obj.onLoadInit = function() { //今回読み込んだムービークリップを表示し、 //前回画像を表示していたムービークリップを非表示にする _root[ clip_name + current_clip ]._visible = true; _root[ clip_name + ( current_clip ^ 1 ) ]._visible = false; //次の読み込みのために //ムービークリップの番号を反転しておく current_clip ^= 1; }; //ボタンがクリックされた時、画像を読み込む btn1.onRelease = function(){ //読み込める方のムービークリップに画像を読み込む load_obj.loadClip("image/package/Gilles/Gilles01.jpg",_root[clip_name+current_clip]); }; btn2.onRelease = function(){ //読み込める方のムービークリップに画像を読み込む load_obj.loadClip("image/package/Gilles/Gilles02.jpg",_root[clip_name+current_clip]); }; btn3.onRelease = function(){ //読み込める方のムービークリップに画像を読み込む load_obj.loadClip("image/package/Gilles/Gilles03.jpg",_root[clip_name+current_clip]); }; btn4.onRelease = function(){ //読み込める方のムービークリップに画像を読み込む load_obj.loadClip("image/package/Gilles/Gilles04.jpg",_root[clip_name+current_clip]); }; btn5.onRelease = function(){ //読み込める方のムービークリップに画像を読み込む load_obj.loadClip("image/package/Gilles/Gilles05.jpg",_root[clip_name+current_clip]); }; ---------------------------------------------------------------------- という感じになっております。 教えて頂いたスクリプトの通りだと想うのですが。 配置してあるボタン、ムービークリップ自体にはスクリプトの書き込みはしなくて良いのですよね?

その他の回答 (2)

  • DPE
  • ベストアンサー率85% (666/776)
回答No.3

#1、2です。 背景が 15 フレームでフェードインしてきて、その終了フレームであるフレーム 15 で画像を読み込むムービークリップとボタンが登場する・・・というように、画像を読み込むムービークリップとアニメに使っているインスタンスが全くの別物であれば、フレーム 15 に stop(); があっても問題はないはずです。 Flash のモーショントゥイーンは1つのレイヤーにつき1つのインスタンスでしか作れません。読み込みに関するムービークリップやボタンはトゥイーンを利用するものとはレイヤーを分けて配置してください。 そうではなくて、画像を読み込むムービークリップの clip0 と clip1 が 15 フレームのトゥイーンになっている、ということでしょうか? 例えば、ある画像がフェードインしてきて、その画像のあった場所にボタンで指定された画像が読み込まれる・・・というような作品です。 このような作品ですと、単純なフェードインや位置が変化するトゥイーンならあまり問題にならないのですが、フェードアウト・明度や色が変化するトゥイーンの場合は注意が必要です。 ムービークリップを使ったトゥイーンでは、トゥイーン終了時の一部の属性(アルファ・明度・色の設定など)がそのまま残ります。 例えば、フレーム1から 15 まで clip0 のアルファを 100 %から 30 %に変化させるというトゥイーンを作り、フレーム 15 に stop(); を書いてタイムラインを止めておくとします。 clip0 はトゥイーンの情報に従い、アルファが 30 %になった状態で表示され続けます。 この状態で clip0 に画像を読み込むと、アルファの情報が受け継がれて画像も 30 %の透明度で表示されることになります。 「明度」「着色」「詳細」で色合いを変化させるトゥイーンを作った場合も同様に、トゥイーンの終了フレームで設定された情報が画像を読み込んだ後でも適用されます。 特に「着色」はムービークリップを1色で塗りつぶす効果ですので、画像を読み込んでも「着色」で指定した色で塗りつぶされてしまいます。 トゥイーンの効果が残っていることが原因だとするなら、一番簡単な対策は、トゥイーンで動くインスタンスと画像を読み込む clip0 と clip1 を別々にすることです。 例えば、アニメにする画像をムービークリップシンボルにして、これをフレーム1から 15 までトゥイーンを使ってアニメにします。 アニメに使うインスタンスは、フレーム 15 で名前を付けておいてください。ここでは仮に” anime_clip ”とします。 フレーム 15 には、トゥイーンを作ったレイヤーのほかにレイヤーを2つ用意して画像を読み込むための clip0 と clip1 をそれぞれ配置し、画像を読み込むスクリプトを書きます。 アニメのムービークリップは、要するに画像が読み込まれた後に非表示にしておけばいいのです。 画像が読み込まれた時に実行される、load_obj.onLoadInit = function() の中に  //アニメのインスタンスを非表示にする  anime_clip._visible = false; というスクリプトを追加して、動作を確認してみてください。 最初は anime_clip がトゥイーンで動き、フレーム 15 に stop(); を設定していればその状態でムービーが止まります。 フレーム 15 で clip0 と clip1 、および btn1 ~ 5 を登場させると、ボタンをクリックした時に画像の読み込みが始まります。 画像の読み込みが済んだ時は、anime_clip が消えて、clip0 か clip1 に読み込まれた画像が表示されます。 stop(); がない時は画像が読み込まれるのに、あると上手くいかないという現象が起こる原因は、トゥイーン終了後も変形情報が残る効果を使った場合くらいしか思いつかないのですが。 違う状況でしたら、画像の読み込みと関係のありそうな部分だけで構いませんのでまた補足してください。 何にしても、画像を読み込むムービークリップは、最初はアニメでそこに画像を読み込むような複雑な使い方をせずに、シンプルな状態でなるべく画像を読み込むことだけに使う方が扱いやすいと思いますよ。

vieux
質問者

お礼

さっき補足をさせて頂きましたが、全く新しいテストファイルを作り、(同じ設定で)試しました所、きちんと出来ております! ...なので、きっと私が作っているファイル自体に何か変なスクリプトなど存在していると言う事になります。 しかし分からないのは、何が違うかなのですが、コレは私の不注意や見落としだと言う事が証明されたので、何度も何がテストファイルと違うのかを見るのですが、唯一の違いはテストファイルでは、ボタンシンボルを使っているのと、実際のファイルはムービークリップをボタンとしているかの違いだけです。 問題に付き合って頂きありがとうございました!

vieux
質問者

補足

DPE様。 本当にお世話になっております... トゥイーンがあるインスタンスと、画像を読み込むclip0, clip1は別物で、別のレイヤーに配置してありますので、DPEさんの言う様にそこは問題で無いと想います。 再度、やってみるとやはりstop(); を何処に置いたとしても、stop();があると、画像表示が上手く行きません。それを外しさえすると機能するんです。 stop();制御無しでムービープレビューをしたら、フェードインして来るムービークリップインスタンストゥイーンが、何故か2回程繰り返されます。ここも分からない所です。何故2回なんでしょう...stop();制御無しなので延々と繰り返されるはずなのに? トゥイーン2回後はボタンを押すと、ちゃんと画像がロードされております。 ボタンとclip0,1共に6フレーム目から登場しており、6フレーム目でも、15フレーム目でもstop();無しで、教えて頂いたスクリプトを書き込めば機能しております。 stop();を書き込むと途端にダメです... stop();の()内にトゥイーンのみをストップするスクリプトを書き込む事は出来るのでしょうか? 重ね重ねありがとうございます!

  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

#1です。 まず、スクリプトを書く場所ですが。 レイヤーはどのレイヤーでも構いません。 絵のあるレイヤーでも動作に違いはありませんが、一般的にはスクリプト専用のレイヤーを作り、空のキーフレームを作って書きます。 スクリプトを書くためのレイヤーを作ってあるのでしたら、スクリプトはそこに書いてください。 #1の作例では、画像を読み込むボタンのスクリプトも、メインのタイムライン( _root )のフレームアクションとしてまとめて書いています。 ムービークリップのタイムラインやインスタンスに書くスクリプトはありません。 スクリプトを書くレイヤーはどれでもいいのですが、”どのフレームに”書くかは大切な問題です。 Flash では、現在ステージにあるムービークリップやボタンのみ、スクリプトで制御できます。 スクリプトを書いたフレームよりも後ろのフレームで登場する予定のインスタンスに対し、「そのうち○○というインスタンスが出てくるから、それをこの通りに処理してね」と前もって約束しておくことはできません。 同様の理由から、既にステージを去ってしまったインスタンスが持っていたものも利用できません。 つまり、btn1 ~ 5 をクリックした時に clip0 か clip1 に画像を読み込むスクリプトは、ステージにこれらのインスタンスが存在しているフレームに書く必要があります。 例えば、ムービークリップとボタンがフレーム1で登場しフレーム2では消えてしまうのなら、スクリプトはフレーム1に書きます。 インスタンスが登場するよりも前のフレームや、インスタンスがステージから消えたフレームにスクリプトを書いても意味がありません。 ------------------------------------------------------------------- ステージに画像を読み込むためのムービークリップ clip0 と clip1 、画像を読み込むボタン(ムービークリップシンボルのインスタンス)の btn1 ~ 5 を配置し、メインのタイムラインのフレーム1に#1の補足欄にあるスクリプトをコピーして試してみたところ、問題なく動きました。 動かない原因として最も怪しいのは、やはりインスタンス名です。 大文字・小文字、全角・半角の誤りがありませんでしょうか。 #1の作例では、インスタンス名は全て、半角の小文字と半角の数字だけで付けています。 インスタンス名に余計なスペースが混入していても、スクリプトが動かない原因になります。 回答文では clip0 と clip1 の前後に半角のスペースが入っていますが、実際のインスタンス名にはスペースを入れないでください。 clip0 と clip1 の元になっているシンボルに何か適当な絵(画像と同じ大きさの四角形など)を描いてみてください。 インスタンス名に誤りがなければ、ムービーを再生した時点でこの絵は表示されなくなるはずです。 これが表示されるのなら、画像を読み込むムービークリップのインスタンス名に問題があると思われます。 clip0 と clip1 は対になっているようなものです。どちらか一方にでも問題があると、スクリプトは正常に動きません。 コピーを利用してインスタンスを配置した時によくある失敗が、同じインスタンス名を持つムービークリップが複数存在してしまうというものです。 インスタンス名を付けたインスタンスをコピーすると、インスタンス名も一緒にコピーされます。 2つのムービークリップをよく見てみてください。両方とも同じ名前になっていませんでしょうか? レイヤー名の横に●が2つあります。左の●をクリックすると、レイヤーの表示/非表示を切り替えることができます。×印になっている時はこのレイヤーにある絵は表示されません。再度クリックすると表示されるようになります。 (レイヤーを非表示にしたままパブリッシュしても、ムービーでは表示されます) ムービークリップを片方ずつ表示して、インスタンス名を確認してみてください。 ****************************** 画像を読み込むムービークリップにも問題がないとすると、次に怪しいのはボタンの方です。 ボタンにカーソルを重ねた時に、手のカーソルに変化しますでしょうか? 何も変化がなければ、ボタンがそもそも反応していません。 例えば、ボタンが他のムービークリップのタイムラインに配置されている場合は、  親のムービークリップのインスタンス名.btn1.onRelease = function() というようにしないと、ボタンをクリックした時の動作が正しく定義されません。 ****************************** 最後に、画像のパスを確認してみてください。 ブラウザで再生する swf ファイルから外部のファイルを読み込む時は、読み込むファイルは” swf ファイルを組み込んでいる HTML ファイルから”見たパスで指定します。 絶対パスで指定して表示されるようなら、ファイルの URL の間違いということになります。 なお、フォルダの構成によっては、「ムービープレビュー」では URL オープンエラーになる場合があります。 (「ムービープレビュー」では swf ファイルのある場所を基準にしてファイルを探しに行くためです) プレビューでエラーになっても HTML ファイルにすると開けることもありますので、実際のフォルダに配置し、ブラウザで確認してみてください。 思いつく原因としてはこのくらいなのですが。 冒頭にも書きましたように、スクリプトが実行される時点でステージに存在していないインスタンスは制御できません。 ご紹介しました作例は、フレーム1にムービークリップとボタンを配置するという、1フレームだけのムービーです。 もし Now Loading 画面や他の内容などを前のフレームに作っている場合は、ムービーの本編が始まるフレーム(画像を読み込むムービークリップとボタンが登場するフレーム)にスクリプトを書いてください。 ------------------------------------------------------------------- ちなみに、「ムービープレビュー」でダウンロードのシミュレーションを行うか、実際にサーバーにアップロードし回線を介して再生する場合は、どんなに小さい画像でも多少は時間がかかります。 瞬時に表示されないからといって何度もボタンをクリックすると、その都度同じムービークリップに画像が読み込まれるため、しばらく空白になってしまう現象が起こります。 #1の最後にも少し書きましたが、読み込みの間は全てのボタンの enabled プロパティを false にし、読み込みが済んだ時点で true に戻す方法があります。 ボタンの名前を共通の名前+通し番号で付けていれば、for ループを使ってまとめて enabled プロパティを書き換えることもできます。 例えば、ボタンをクリックした時の処理に (↓各行頭に全角のスペースが入っています。コピーする際はご注意ください)  btn1.onRelease = function()  {   //読み込める方のムービークリップに画像を読み込む   load_obj.loadClip( "○○○.jpg" , _root[ clip_name + current_clip ] );   //全ボタンをクリック不可にする   for( i = 1 ; i <= 5; i++ )   {    _root[ "btn" + i ].enabled = false;   }  }; というような処理を追加してみてください。 ボタンを1度クリックすると、次はどのボタンもクリックできなくなります。 全ボタンをクリック不可にする処理はどれにも共通しているので、関数として作っておくと便利です。 これだけではいつまでもクリックできないままなので、読み込みが済んだ時に全ボタンの enabled プロパティを true に戻します。 load_obj.onLoadInit = function() の中に  //全ボタンをクリック可能にする  for( i = 1 ; i <= 5 ; i++ )  {   _root[ "btn" + i ].enabled = true;  } を追加すると、読み込み終了後に再度ボタンをクリックできるようになります。 画像が正常に読み込めるようになりましたら、よろしければ追加してみてください。

vieux
質問者

お礼

再度、詳しい説明ありがとうございます! もう一度、シンボルのインスタンス名、余計なスペース等無いかチェックしてみます!

vieux
質問者

補足

DPE様。 気がついた事がありますので、再度書き込ませて頂きます。 まず、今作成しているファイルは15フレームあり、問題のムービークリップが出て来るまでにシンプルなトゥイーン(アニメーションというのでしょうか?)が存在しております。 それを15フレーム目で、スクリプト用のフレームに『stop();』と書き込みそのアニメーションが繰り返されない様に制御しております。 この為に以前書き込んだDPEさんに教えて頂いたスクリプトが機能しないのだ、という事に気付きました(本当に申し訳ないです)。 ここで、疑問なのが、どうすれば両方のスクリプトを機能させる事が出来るのでしょう? 実際、『stop();』を削除すると、ちゃんとJpgファイルはロードされるのですが、そうしてしまうと、そのアニメーションが繰り返し再生されてしまいます。それは避けたいのです。 初心者なもので、本当に何度も申し訳ないです!宜しくお願いします。

関連するQ&A

  • 質問No.2788309『JPGファイルのローディングの際』続き

    http://oshiete1.goo.ne.jp/qa2788309.html で質問させて頂いた者です。 協力を得て、ここまではクリアしました!(有り難うございました!) が... 今度、そのファイルをswfファイルとしてパブリッシュし、また別の(メインとなる)swfファイル中に読み込み、ムービープレビューをした途端に、JPGが出て来なくなってしまいました。 これは『パス』と言うものの問題なのでしょうか? いまいちこの『パス』の指定の仕方が分かりません。 (メインの)swfファイルでキチンとJPGを表示させるには、一体何処を直したら良いのでしょうか。 宜しくお願い致します。 過去に教えて頂いたアクションスクリプトは以下の通りです。 単一のswfファイルとしてはきちんと機能しております。 ------------------------------------------------------- //現在、画像を読み込める方のムービークリップの番号を管理 //値は0または1 current_clip = 0; //画像を表示するムービークリップに共通する名前を保持 clip_name = "clip"; //画像表示用のムービークリップを非表示にしておく _root[ clip_name + "0" ]._visible = false; _root[ clip_name + "1" ]._visible = false; //読み込み用のオブジェクトを作成 load_obj = new MovieClipLoader(); //読み込み終了時の処理 load_obj.onLoadInit = function() { //今回読み込んだムービークリップを表示し、 //前回画像を表示していたムービークリップを非表示にする _root[ clip_name + current_clip ]._visible = true; _root[ clip_name + ( current_clip ^ 1 ) ]._visible = false; //次の読み込みのために //ムービークリップの番号を反転しておく current_clip ^= 1; }; ///////////////////////////////////////////////////////// //ボタンがクリックされた時、画像を読み込む ///////////////////////////////////////////////////////// load_btn1.onRelease = function() { //読み込める方のムービークリップに画像を読み込む load_obj.loadClip( "○○○.jpg" , _root[ clip_name + current_clip ] ); }; load_btn2.onRelease = function() { //読み込める方のムービークリップに画像を読み込む load_obj.loadClip( "△△△.jpg" , _root[ clip_name + current_clip ] ); }; /*以下、ボタンの数だけ同様に定義する*/

    • ベストアンサー
    • Flash
  • 「質問番号:1682673」のローディングをカスタマイズしたいのです。

    「質問番号:1682673」 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1682673 のフレームを使ったローディング方法を利用したいのですが、 1つ分らないことがございます。 ----------------------------------- フレーム1 load_obj.loadClip( "0" + i + ".jpg" , this[ "ph0" + i ] ); フレーム3 prog = load_obj.getProgress( this[ "ph0" + i ] ); this[ "ph0" + i ]._visible = true; ----------------------------------- に記述のある「this[ "ph0" + i ]」は、 rootに配置したムービークリップにJPGを入れ込んでいると 思うのですが、その[ "ph0" + i ]のムービークリップを ------------- "ph0" + i + "MC" ------------- というムービークリップの中に配置したいのです。 例えば、外部ファイル01.jpgを ph01MC.ph01 に入れたいということです。 「this[ "ph0" + i ]」の命令規則がよく分っておらず、 以下のように記述してみましたが、だめでした。 ----------------------------------- this[ "ph0" + i + "MC" . "ph0" + i ] this[ "ph0" + i + "MC" ] . [ "ph0" + i ] [ "ph0" + i + "MC" ] . this[ "ph0" + i ] ----------------------------------- どのように記述したら良いでしょうか? ご回答お待ちしております。 作業環境: ------------- WinXP FLASH8 ActionScript2.0 -------------

    • ベストアンサー
    • Flash
  • thisをインスタンス名に変えたらムービーが動かない

    Flash8です。タイムライン上に、 ボタン(インスタンス名 b1_btn) と ムービークリップ(インスタンス名 test_mc) を配置しました。 次に、このボタンインスタンスに以下のイベントハンドラを記述しました。 ----------------- on (press) { this.stop(); } ----------------- 実行すると、ボタンを押せばムービーが停止します。 で次に、上記の記述を以下のように変えます。 ----------------- on (press) { test_mc.stop(); } ----------------- 実行すると、ボタンを押してもムービーが停止しません。 なにがイケないのでしょうか?

  • loadMovieしたムービークリップのボタン化

    ムービークリップにloadMovieで1.jpgをロードし、それをボタンにしたいのですが、下のスクリプトではうまく動作しません。 menu01_mc.loadMovie("1.jpg"); menu01_mc._xscale=10; menu01_mc._yscale=10; menu01_mc.onRelease = function(){ gotoAndStop(5); } 最初のloadMovieの部分をなくし、 menu01_mc.onRelease = function(){ gotoAndStop(5); } とするとちゃんと動作します。 loadMovieしたムービークリップはボタンにできないのでしょうか? FlashCS3、actionscript2.0で作成しています。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • ボタンを押した時、外部swfを読み込み

    ムービークリップ内のボタン(写真のサムネイル)を押した時、外部.swf(写真やコメントを書いたswf)を読み込もうとしております。 _rootに空のムービークリップを配置し、インスタンス名を load_mcと指定。 _rootに配置したムービークリップの中に配置してあるボタンに on (release) { this._parent.load_mc.loadMovie("comment.swf"); } と書きました。しかしボタンを押してもcomment.swfが表示されません。 解決方法をお教えください。よろしくお願いいたします。

  • loadMovieでjpgを外部テキストから読み込むには?

    私はloadMovieを使ってjpgファイルを読み込みたいとおもっているのですが、ただjpgファイルを読み込むのではなく、変数指定を行い、外部txtファイルの変数に指定されているjpgファイルを読み込むようしたいと思っています。 下記のようなソースで書いているのですが、うまくいきません。どうか手ほどきしていただけないでしょうか? お願いします。 (1)タイムライン上に下記のプログラムを書いています。 forJpeg.loadVariables("test.txt"); (2)forJpeg2のムービークリップに下記のプログラムを書いています。 onClipEvent (load) { _root.forJpeg2.loadMovie(abc);//()内は変数名 } (3)test.txtファイルは下記のように書いています。 abc=news.jpg

    • ベストアンサー
    • Flash
  • ムービークリップ内のボタン

    フラッシュ初心者です。 アクションスクリプトがうまく動かず困っています。 シーン1にムービークリップ1(インスタンス名:mc1)とムービークリップ2(インスタンス名:mc2)が置いてあります。 mc2の中にはボタンAを配置してあり、ボタンAをクリックすると、mc1のフレームラベル(B)に飛ぶような制御をしたいです。 ボタンAに記述してあるスクリプトは以下です。 on (release) { this._parent.mc1.gotoAndplay("B"); } しかしクリックしても全く動きません。 絶対パスで指定してもダメでした。 ちなみに、ためしに、mc1ではなく、シーン1上のフレームラベルに 飛ばすように記述したら普通に動きました。。 何か記述間違いがあるのでしょうか? 分かる方がいましたら教えてください。 お願いします。

  • swapDepths について

    ※FLASH 5 を使っています。 attachMovie で複製した MC での swapDepths について教えて下さい。 まず attachMovie をする為の素材を作ります。 丸い図形を作り、それをボタンにし 『 ボタン1 』 とします。 そのボタンを MC にして 『 MC1 』 とします。 『 MC1 』 をリンケージで識別子を 『 MARU 』 とします。 『 MC1 』 に配置された 『 ボタン1 』 に下記 AS を書きます。 on (press) { this.swapDepths(_root.HAICHI.maxdepth++); startDrag (""); } on (release) { stopDrag (); } 別に配置用の空の MC を作り、ステージ上に配置し 『 HAICHI 』 と名前を付けます。 更にステージ上に 『 ボタン1 』 を配置して、そのボタンに下記 AS を書きます。 on (release) { i ++; _root.HAICHI.attachMovie( "MARU", "MARU"+i, _root.HAICHI.maxdepth++ ); _root.HAICHI["MARU"+i]._x = 50; _root.HAICHI["MARU"+i]._y = _ymouse; } これでボタンを押すと丸い形の MC が複数配置できるようになります。 また複製された MC のうち背後にある MC をクリックすると、その MC が最前面に配置 されるようになります。 ここまでは良いのですが、新たに 『 MC2 』 を作り、そこに 『 MC1 』 を配置します。 つまり『 MC2 』 の中に 『 MC1 』 が配置され 『 MC1 』 の中に 『 ボタン1 』 が配置 されている状態です。 更に 『 MC1 』 のリンケージを解除して、『 MC2 』 にリンケージで識別子を 『 MARU 』 とします。 このようにした場合、ボタンを押すと MC の複製は出来るのですが、MC をクリックしても 最前面には出て来ません。 ムービークリップのムービークリップでは swapDepths は利かないのでしょうか? MC にも AS を書きたいので、どうしても入れ子にしなければなりません。 何か良い方法がありましたら教えて頂けますよう宜しくお願い致します。

    • ベストアンサー
    • Flash
  • 【新】超初心者です。思うように動いてくれません。

    たびたび申し訳ありません。勘違いがありましたので再投稿いたします。 下記の同タイトル質問はご放念ください。 「シーン1」にムービークリップ「MC01~10」を作成し、MC01から順に再生してゆくFLASHを作成しています。 それぞれのムービークリップの中に早送りボタン配置し、これを押すと次のムービークリップの指定したフレームに移動して再生してほしいのですが、思うように動いてくれません。 _root.mc##.gotoAndPlay(*); もダメでしたし、 _root.nextFrame(*); もダメでした。 (*=該当フレームの数) _root.nextFrame(); で指定すると、次のムービークリップの一番初めから再生はしてくれるのですが、 そのムービークリップ内の指定したフレームから開始したいのです…。 (そもそも、_root.nextFrame(*);が正しいのかどうかもよくわかっていません…) 使用しているのはAdobe Flash CS3 Progessional、Vistaにて作業しています。 まったくの初心者のため、説明不足・意味不明な表現がありましたらご指摘いただければと思います。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ボタンを押すとMCが大きくなるFlash

    AdobeCS4、ActionScript2.0で、ボタンを押すとMCが大きくなるFlashを作ろうとしているのですが、 上手く動かないので質問させていただきます。 画面上に、ボタンと四角のムービークリップがあり、 ムービークリップの上にダイナミックテキスト(変数名point)でボタンを押した回数を表示させて、 ボタンを押すとMCが大きくなるようにしたいのです。 ボタンを押して回数を数えさせるのは、 on (press) { point = +1; } で出来るようになりました。 MCを大きくするのも、過去の質問を参考にしたら出来るようになったのですが、 この二つを合わせると動かなくなってしまいました。 また、過去の質問http://okwave.jp/qa/q4271772.html これだと、ずっと大きくなってしまうので、ある程度大きくなったら、 大きくなるのを止めたいのですが、それも上手くいきませんでした。 どうしたらいいのか、教えていただけますでしょうか? よろしくお願いします。

    • ベストアンサー
    • Flash

専門家に質問してみよう