• ベストアンサー

FLASHで指定フレームまでを再生したい

FLASHを初めて触っています。 外部のSWFファイルを読み込んで再生しているのですが その中のあるフレームまで再生されたら停止するような スクリプトにしたいのですが そのようなことはできますか? あるフレームから開始することはできるんですが ここまで、と停止するメソッドが良く分かりません。 分かる方いらっしゃったらお教えください。

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

  • ベストアンサー
  • mat-21
  • ベストアンサー率56% (91/162)
回答No.2

やり方はいろいろあると思いますが、ご参考までにどうぞ。 まず、どのような動作で動くことを想定して、個々のSWFもしくは、ActionScriptで設定するかがまず、考えなければなりません。この場合、もとのSWF(ここでは、Oya.swfとします)に外部のSWF(ここでは、Ko.swfとします)を読込み、さらに、読み込んでいるKo.swfの例えば20フレーム(タイムライン)に来たら止まるという設定にしたいと考えます。しかしながら、読み込ませるKo.swfは、場合によっては、始まる・止まるフレームを変えたいので、Ko.swfに、ActionScriptを設定するのは避けたい場合は、次のようにします。 まず、読み込ませるKo.swfのタイムライン1にアクションスクリプト用に空○のキーフレームを設け、その○にActionScriptを入力します。 this.stop(); this._visible=0; このスクリプトは、止めて、不可視状態にするスクリプトです。 後々、Oya.swfで作業しやすい用にこの状態にしておきます。 次にもとのOya.swf側ですが、まず、ActionScript用に空○のキーフレームを設けます。タイムライン1に○があると思いますが、その○にActionScriptを入力します。外部のKo.swfを読み込ませるスクリプトで、 loadMovieNum('Ko.swf',1); //ここではレベルは1とします。 これだけみても、何も表示されないはずです。 それは、Ko.swfが止まっていて、不可視状態だからです。 よって、続きで if(_level1._visible==0){ _level1._visible=true; } if(_level1._currentframe<=1){ _level1.play(); } と入力します。 これだけでみると、 Ko.swfが読み込まれた際、表示され、最初から動いているかと思います。 あとは、例えばKo.swfのタイムライン20まできたら止まるという設定をもとのOya.swf側でするだけです。まず、 Oya.swf側をタイムライン3まで延ばします。そして、タイムライン2と3にアクションスクリプト用に設けたレイヤーに1同様空○のキーフレームを設けます。次に3のタイムライン上の空のキーフレームに次のスクリプトを入力します。 this.gotoAndPlay(this._currentframe-1); 次にタイムライン2の○に if(_level1._currentframe>=20){ _level1.gotoAndStop(20); } 以上です。 コツは、 ●もとのSWF側で操作したい ●読み込ませる側を一番最初のフレームで止めておく ●もとのフレーム1では、読み込ませるだけ ●もとのフレーム2と3でリピートさせ、フレーム2に戻る際に、読み込ませているSWFのフレームがいくつに行っているかを判定させ、もし、のぞみのフレームに行っていたら止める って感じです。後は応用して下さい。

その他の回答 (1)

noname#222916
noname#222916
回答No.1

読み込まれる側のSWFの止めたいフレームにSTOPと入れるのではいけないの?

sweetbitter
質問者

お礼

アドバイスありがとうございます。 ごめんなさい・・それではダメなんです。 ある処理ではアニメーションの途中から途中を切り取って 他の処理では別の切り取り方をする、 ということをしたいので、別々のアニメーションを作るのは避けたいのです。 FLASHのツール内でフレームにSTOPが入れられるということは ActionScriptでも制御できてもいいんじゃ?と思ったのですが 甘いですかね?

関連するQ&A