• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ループ再生のflashをタイムラインの途中から再生)

ループ再生のflashをタイムラインの途中から再生する方法

このQ&Aのポイント
  • AdobeのFlashを使って他人の作ったflashの編集をする事になりましたが、ActionScriptの知識が不足しており困っています。特に、ループ再生のflashをタイムラインの途中から再生する方法を知りたいです。
  • 現在、ループ再生のflashは最初のフレームから再生されていますが、''画像が表示''の部分から再生を開始するように変更したいです。具体的には、アルファの白い画面→''画像が表示''→アルファの白い画面→ループ、頭に戻るという動きの中で画像が1→2→3と変化するようにしたいです。
  • ActionScriptのコードには、ループのカウント変数であるloop_cntとmcimg(イメージ変数)のフレーム数を比較し、カウント変数が未定義またはフレーム数を超えた場合はカウント変数を1に設定するという処理が含まれています。ただし、詳細な解読ができていないため、具体的な命令方法はわかりませんが、この部分を変更することで目的を達成できる可能性があります。初めての投稿のため、記述に至らない点があるかもしれませんが、どうぞよろしくお願いいたします。

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

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

#1で回答した者です。 #1の回答では > if( loop_cnt == undefined || loop_cnt>mcimg._totalframes) > {loop_cnt = 1;} これがご質問の本題に関係があるものとして そこからムービーの構造やしくみを私が勝手に想像した上での回答です。 仮にご質問中の > if( loop_cnt == undefined || loop_cnt>mcimg._totalframes) > {loop_cnt = 1;} これはなかったものとします。 そして > (flashを途中から再生させる→ループで頭に戻る > →その後はそのまま全てのタイムラインをループ) だけにシンプルに答えるとします。 その場合はスクリプトを次のようにすれば良いと思います。 再生させるタイムラインのフレーム1に書くスクリプトです。 (_rootを再生させるなら_rootのタイムラインのフレーム1に書くスクリプトです。) (ムービークリップ内を再生させるならムービークリップ内のタイムラインのフレーム1に書くスクリプトです。) ----------------------------------- //再生開始フレームを設定(4は例えばの例) var start_frm = 4; //もし変数 play_flag が未定義であれば if (play_flag == undefined) { //変数 play_flag を true と定義 var play_flag = true; //このタイムラインをこのフレームで停止 this.stop(); //---ロード待ち処理------ //毎フレーム実行するメソッドを定義 this.onEnterFrame = function() { //このタイムラインが指定フレームまでロードされたら if (this._framesloaded>=start_frm) { //指定フレームより再生開始 this.gotoAndPlay(start_frm); //毎フレーム実行するメソッドを削除 delete this.onEnterFrame; } }; } ----------------------------------- #1 と同じく,一応 Flash MX 以上(MX,MX2004,8,CS3,CS4,CS5,CS5.5 のいずれか)をお持ちで ActionScript 1.0 (または 2.0) を使う設定で Flash Player 6 以上用の SWF をパブリッシュするものと想定しています。

halu_e
質問者

お礼

お礼を書く場所を間違えてしまいました>< 本当にありがとうございました!

halu_e
質問者

補足

情報が足りない中で的確な推測、丁寧なご回答本当にありがとうございます。 Flash CS3,ActionScript 2.0を使っています。 最初にお伝え出来ず申し訳ございませんでした。 実は問題のflashには多くのムービークリップやボタンなどが組み込まれており、それらの実行のタイミングが1フレーム目に指定され、尚かつ全体のアルファと連動している為、モーショントゥイーンで作り直す事ができずに困っていました。 色々調べても類似の記事が無かった為、他の人の参考にもなるようなるべくシンプルな質問内容にしようとした事で、逆に手間を取らせてしまいました (flashを途中から再生させる→ループで頭に戻る→その後はそのまま全てのタイムラインをループ) この質問にお答え頂いた#2の回答が非常に参考になりました。 #2ご回答の通り書き足してflashを書き出した所 希望の 途中から再生し、全ループするflashができました。 本当にありがとうございました。

その他の回答 (1)

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

とりあえず, 具体的状況(ムービーの構造など)がわかりません。 以下は私が勝手に推測した(決めた)状況での回答です。 また,お持ちの Flash のバージョンも ご使用の ActionScript のバージョンすらも書かれていらっしゃらないため本来は全く回答できません。 が,mcimg._totalframes と書かれていらっしゃる部分から少しは推測できます。 この部分から ActionScript のご使用バージョンは少なくとも 3.0 ではないということがわかります。 またこの部分から ステージ上には内部が複数フレームからなる「mcimg」というインスタンス名を付けたムービークリップが存在していて ActionScript でその「mcimg」内の表示フレームを切り替えているのではないかとも推測されます。 ムービークリップ「mcimg」の内部の各フレームには 「単なる画像」が置いてあるだけであるものとします。 つまり ムービークリップ「mcimg」の内部の各フレームには 内部で フェードイン/アウト するムービークリップは置いていないものとします。 (つまり,ムービークリップ「mcimg」の内部には フェードイン/アウト する仕組みが何も仕組まれていないものとします。) また,ムービークリップ「mcimg」を フェードイン/アウト させること以外のスクリプトは存在しないものとします。 その場合 スクリプト全文を次のようにすれば > ''画像が表示''→アルファの白い画面→ループ のようなものができると思います。 ----------------------------------- //フェードアウト/インさせるスピードを設定 var fade_spd = 4; //完全表示させる秒数を設定 var show_sec = 2.5; //変数 loop_cnt が未定義であれば if (loop_cnt == undefined) { //変数 loop_cnt の値を1にする loop_cnt = 1; //±を決める変数を用意 plus_minus = -1; //「mcimg」内の再生を停止 mcimg.stop(); //「mcimg」のアルファを100にする mcimg._alpha = 100; // //繰り返して遅延実行 var ID = setInterval(function () { //関数fadeOutInを毎フレーム実行 mcimg.onEnterFrame = fadeOutIn; //遅延実行の繰り返しをやめる clearInterval(ID); }, show_sec*1000); } //フェードアウト/インさせる関数を定義 function fadeOutIn() { // //「mcimg」をフェードアウト/イン mcimg._alpha += plus_minus*fade_spd; // //「mcimg」のアルファが0以下になれば if (mcimg._alpha<=0) { //loop_cnt の値が「mcimg」内のフレーム数以上になれば if (loop_cnt>=mcimg._totalframes) { //loop_cnt の値を1に戻す loop_cnt = 1; } else { //それ以外は loop_cnt の値に1を加算 loop_cnt++; } // //「mcimg」内のフレームをloop_cntフレームに進めて停止 mcimg.gotoAndStop(loop_cnt); //±を決める変数を+にする plus_minus = 1; //「mcimg」のアルファが100以上になれば } else if (mcimg._alpha>100) { //関数fadeOutInを毎フレーム実行するのを解除 delete mcimg.onEnterFrame; //±を決める変数を-にする plus_minus = -1; // //繰り返して遅延実行 ID = setInterval(function () { //関数fadeOutInを毎フレーム実行 mcimg.onEnterFrame = fadeOutIn; //遅延実行の繰り返しをやめる clearInterval(ID); }, show_sec*1000); } } ----------------------------------- 一応 Flash MX 以上(MX,MX2004,8,CS3,CS4,CS5,CS5.5 のいずれか)をお持ちで ActionScript 1.0 (または 2.0) を使う設定で Flash Player 6 以上用の SWF をパブリッシュするものと想定しています。 (例えば Flash Lite 1.1 用SWFパブリッシュ や Flash 5 使用などは想定外) ただ思うのですが... 仮にこれだけのことをするだけであるなら ActionScript など使わず モーショントゥイーン で普通に(ちゃんと)作れば良いだけだと思いますが。 また上記で回答したものとは全く違うものを作成されている可能性も大大大です。 その場合は悪しからず。 ~#2へ続く~