電子書籍の厳選無料作品が豊富!

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

A 回答 (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);
}
//------------------------------------------------

 
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/06/05 14:44

ボタンを押すと,ムービークリップ(インスタンス名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();
}
//------------------------------------------------


 
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!