• ベストアンサー

ムービークリップを1コマ飛しで再生

シーン1上にムービークリップ(インスタンス名mc)とボタンを配置します。ボタンを押すとタイムラインを1コマ飛ばしで再生するにはアクションスクリプト3をどのように記入すればよいでしょうか? (再生はループしボタンから離れると止まる)

  • Flash
  • 回答数2
  • ありがとう数1

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

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

#1です。 すみません一部訂正というか,1行書き忘れです。 関数 finishSpeedUp 内の最後に //「stage」上でマウスアップ時に 関数 finishSpeedUp を実行するのをやめる stage.removeEventListener(MouseEvent.MOUSE_UP,finishSpeedUp); を入れるのを忘れていました。 スクリプトの書き始めでは(構想段階では) 上の1行を入れるつもりだったのですが 実際にコードを書いているうちに入れることをすっかり忘れ去っていました。 訂正はそこだけですが 再びスクリプトの全文を書いておきます。 //------------------------------------------------ //「speed_up_btn」押下時に 関数 speedUp を実行 speed_up_btn.addEventListener(MouseEvent.MOUSE_DOWN,speedUp); //関数 speedUp の定義 function speedUp(evt:MouseEvent):void { //1フレーム進む時間毎に 関数 playHighSpeed を実行 mc.addEventListener(Event.ENTER_FRAME,playHighSpeed); //「stage」上でマウスアップ時に 関数 finishSpeedUp を実行 stage.addEventListener(MouseEvent.MOUSE_UP,finishSpeedUp); } //関数 playHighSpeed の定義 function playHighSpeed(evt:Event):void { //「mc」の再生フレームが最終フレームでなければ if (evt.target.currentFrame!=evt.target.totalFrames) { //「mc」の再生フレームを2フレーム先に進めて停止 evt.target.gotoAndStop(evt.target.currentFrame + 2); } else { //それ以外は「mc」の再生フレームをフレーム2に戻して停止 evt.target.gotoAndStop(2); } } //関数 finishSpeedUp の定義 function finishSpeedUp(evt:MouseEvent):void { //1フレーム進む時間毎に 関数 playHighSpeed を実行するのをやめる mc.removeEventListener(Event.ENTER_FRAME,playHighSpeed); //「mc」を普通に再生させる mc.play(); //「stage」上でマウスアップ時に 関数 finishSpeedUp を実行するのをやめる stage.removeEventListener(MouseEvent.MOUSE_UP,finishSpeedUp); } //------------------------------------------------  

koocom
質問者

お礼

ありがとうございます。 分かり易く、すばらしいです。 こんなアクションスクリプトがすらすら書けるようになりたいものです。

その他の回答 (1)

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

ボタンを押すと,ムービークリップ(インスタンス名mc)"内" のタイムラインの再生を1コマ飛ばしで再生させるようにするのですよね? そのボタンに 例えば「speed_up_btn」というインスタンス名を付けるとします。 それら「mc」や「speed_up_btn」が存在するフレームに書くスクリプト例です。 //------------------------------------------------ //「speed_up_btn」押下時に 関数 speedUp を実行 speed_up_btn.addEventListener(MouseEvent.MOUSE_DOWN,speedUp); //関数 speedUp の定義 function speedUp(evt:MouseEvent):void { //1フレーム進む時間毎に 関数 playHighSpeed を実行 mc.addEventListener(Event.ENTER_FRAME,playHighSpeed); //「stage」上でマウスアップ時に 関数 finishSpeedUp を実行 stage.addEventListener(MouseEvent.MOUSE_UP,finishSpeedUp); } //関数 playHighSpeed の定義 function playHighSpeed(evt:Event):void { //「mc」の再生フレームが最終フレームでなければ if (evt.target.currentFrame!=evt.target.totalFrames) { //「mc」の再生フレームを2フレーム先に進めて停止 evt.target.gotoAndStop(evt.target.currentFrame + 2); } else { //それ以外は「mc」の再生フレームをフレーム2に戻して停止 evt.target.gotoAndStop(2); } } //関数 finishSpeedUp の定義 function finishSpeedUp(evt:MouseEvent):void { //1フレーム進む時間毎に 関数 playHighSpeed を実行するのをやめる mc.removeEventListener(Event.ENTER_FRAME,playHighSpeed); //「mc」を普通に再生させる mc.play(); } //------------------------------------------------  

関連するQ&A

  • flashでムービークリップを逆再生

    flashでムービークリップを逆再生でタイムラインに配置したいです。 アクションスクリプトを使うところまではわかっているつもりです。 いろいろと検索して、試してみたのですがうまくいきませんでした。 おそらくそんなに難しいことではないと予想しているのですが。 指示をいただけると幸いです。 よろしくお願いいたします。

  • ムービークリップ内のボタン

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

  • FLASHの同一タイムラインで、複数のムービークリップを順に再生したい

    ムービークリップを複数作成しました。(名前を仮にa_mc, b_mc, c_mcとします。) このムービークリップを順に再生していきたいので、同一タイムライン上の 1フレーム目にa_mc 2フレーム目にb_mc 3フレーム目にc_mc と配置し、タイムラインの最後のフレームに this.stop(); とスクリプトを書きましたが、a_mcの再生が終わったところ(=1フレーム目)で停まってしまいます。 1フレーム目の後、2フレーム目以降(b_mcとc_mc)を続けて再生するには、どのようにすれば良いのでしょうか?

    • ベストアンサー
    • Flash
  • ムービークリップとインスタンス

    「ライブラリ内にあるのがムービークリップで、それをステージに配置したものがインスタンスである。」このように理解しているのですが、これは間違いでしょうか? 1、「MCを一つ作成し、それをステージ上に3カ所に配置し、各"MC"に01、02,03とインスタンス名を付けた。」 2、「MCを一つ作成し、それをステージ上に3カ所に配置し、各"インスタンス"に01、02,03とインスタンス名を付けた。」 上記の場合どちらが正しいのでしょうか? ムービークリップとインスタンスについてご教授ください。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • ムービークリップ再生順序 制御について

    はじめて質問します。Flash初心者ゆえつたない説明ですいませんが、よろしくお願いします! Flash:ActionScript2.0 [現状] メインフレームにABCというムービークリップを配置しています。 それぞれ「mc1」「mc2」「mc3」というインスタンス名がついています。 各ムービークリップにはそれぞれ動きが設定しており、”moving”というフレームラベルをつけています。 [どう動作してほしいか] まずAのムービークリップが再生。Aのムービークリップ再生終了。 ↓ Bのムービークリップ再生開始。Bのムービークリップ再生終了。 ↓ Cのムービークリップ再生開始。Cのムービークリップ再生終了。 ↓ Aに戻る。 上記の動きをタイムラインを利用するのではなく、メインフレームに1つactionScriptを書くことで動作させるにはどうしたらいいでしょうか? ちなみに今は以下のように記述しており、実行すると3つのムービークリップが全て同時に動いてしまいます。 var list:Array = new Array(); for(var i=1; i < 4; i++) { var mcname = "mc" + i ; list[i] = eval(mcname); list[i].gotoAndPlay("moving"); } よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ムービークリップの深度変更

    タイムラインの同じフレーム上に 1~10(10個)のムービークリップを配置し、 1のムービークリップの再生が終わったら、 2のムービークリップが一番上に来て再生が始まり、 2の再生が終わったら、3が一番上に来て再生が始まる、 (10が終わったら1へ戻るループ)という流れのムービーを作成したいと考えています。 ムービークリップ再生終了後、自動的に深度を変える 方法がわからずご質問させて頂きますが、 可能でしょうか? 以下のサイトのような動きをさせたいと思っております。 http://www.tipness.co.jp/ よろしくお願い致します。

    • ベストアンサー
    • Flash
  • ムービークリップの再生速度

    はじめまして。 2週間程前から初めてFLASHを製作をしているのですが、フレームレートの件で行き詰まったので質問させていただきます。 30fpsのタイムライン上に、17fpsで動くムービークリップ(内容は6枚のコマアニメ?です)を置きたいんですが、このような場合はどのようにすれば良いのでしょうか。 アクションスクリプト等でムービークリップの再生速度を変更する事は可能なのでしょうか。 環境はWinXP・FLASH MXです。宜しくお願い致します。

  • ボタンシンボルから、上の階層のムービークリップへの指示。

    flash初心者です。 mc_01の中にmc_02があり、その中に配置してあるボタンを押すと、mc_01と同じタイムラインにあるmc_Aの2フレーム目が再生されるようにしたいのですが。。パスに気をつけてgotoandplayアクションを書いてもうまくいきません。(ちなみに全体がまたひとつのムービークリップになっています。) 何かの本で、複雑なアニメーションになると、下位から上位にアクションを指定しようとしてもうまくいかない場合があるのでfunction機能を使うと良いと書いてあったような気がします。 わかる方、どうかよろしくお願い致します!

    • ベストアンサー
    • Flash
  • FLASHで外部ムービークリップのコントロール

    現在学校に通いFLASHの勉強をしています。 ある程度の基本的なスクリプトなら自分で書けるレベルです。 今回、学校での課題作成にあたり 外部のSWFファイルに配置したムービークリップのコントロールというのは出来るのかどうかが分からず投稿しました。 使用ソフトはflashCS3です。 例えば、a.swfにボタンを配置し、 押したらb.swfの「b_mc(ムービークリップ)を再生」とかはアクションスクリプトで制御出来るのでしょうか? また、こういった動作をしたい時のスクリプトの書き方などを回答として頂けると助かります。 よろしくお願いします。

  • Flash フレームを指定してムービークリップ再生

    ActionScript超初心者です。 よろしくお願いします。 ステージ上にボタン「A」「B」「C」を配置、 ボタン脇のスペースにムービークリップを配置、各ボタンで切り替え再生させたいと思っています。 2フレーム目に簡単なアニメーションのムービークリップ「animA」を、 3フレーム目に同様の「animB」4フレーム目に「animC」を配置し、 各ボタンon (release)で各ムービークリップの再生をしたいのですが うまくいきません。 どこにどのようなスクリプトを書けば良いか教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Flash