• ベストアンサー

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

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

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

  • ベストアンサー
  • 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

専門家に質問してみよう