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

フラッシュ AS3 初心者です。
シーン1に配置されたムービークリップ(mc)を、再生・早送り・巻き戻し・停止ボタンでコントロールしたいのですがよくわかりません。
早送り・巻き戻しは速度を設定で変えられるとうれしいです。

A 回答 (1件)

もうすでに自力で解決されていらっしゃるとは思いますが念のため。

。。


このご質問の後にされている質問
「ムービークリップを1コマ飛しで再生」
(OKWave系の代表3サイト)
http://oshiete.goo.ne.jp/qa/6787543.html
or
http://oshiete.goo.ne.jp/qa/6787543.html
or
http://oshiete1.nifty.com/qa6787543.html
などなどなど...

ここ↑で書かれていらっしゃる内容(仕様)に従うこととしてよろしいでしょうか?

その場合,次のような感じになると思います。


ステージ上に用意するインスタンスは次の5つであるとします。

「mc」:再生/逆再生などをさせるムービークリップ
「back2_btn」:mc内を高速逆再生させるボタン
「back1_btn」:mc内を逆再生させるボタン
「stop_btn」:mc内の再生を止めるボタン
「next1_btn」:mc内を普通に再生させるボタン
「next2_btn」:mc内を高速再生させるボタン

これらが存在するフレームに書くスクリプト例です。

//==================================
//早送り時のスピードを設定 (★可変)
var high_spd:int = 3;

//特殊再生時のスピードの変数の宣言
var spd:int;

//---↓back2_btn↓------

//「back2_btn」押下時に 関数onBack2Press を実行
back2_btn.addEventListener(MouseEvent.MOUSE_DOWN,onBack2Press);

//関数onBack2Press の定義
function onBack2Press(e:MouseEvent):void {
//特殊再生時のスピードを -high_spd にする
spd = - high_spd;
//共通で使用する関数 commonFunc を実行
commonFunc();
}

//---↓back1_btn↓------

//「back1_btn」押下時に 関数onBack1Press を実行
back1_btn.addEventListener(MouseEvent.MOUSE_DOWN,onBack1Press);

//関数onBack1Press の定義
function onBack1Press(e:MouseEvent):void {
//特殊再生時のスピードを -1 にする
spd = -1;
//共通で使用する関数 commonFunc を実行
commonFunc();
}

//---↓stop_btn↓------

//「stop_btn」押下時に 関数onStopPress を実行
stop_btn.addEventListener(MouseEvent.MOUSE_DOWN,onStopPress);

//関数onStopPress の定義
function onStopPress(e:MouseEvent):void {
mc.stop();
}

//---↓next1_btn↓------

//「next1_btn」押下時に 関数onNext1Press を実行
next1_btn.addEventListener(MouseEvent.MOUSE_DOWN,onNext1Press);

//関数onNext1Press の定義
function onNext1Press(e:MouseEvent):void {
mc.play();
}

//---↓next2_btn↓------

//「next2_btn」押下時に 関数onNext2Press を実行
next2_btn.addEventListener(MouseEvent.MOUSE_DOWN,onNext2Press);

//関数onNext2Press の定義
function onNext2Press(e:MouseEvent):void {
//特殊再生時のスピードを high_spd にする
spd = high_spd;
//共通で使用する関数 commonFunc を実行
commonFunc();
}

//---↓特殊再生用の関数群↓------

//共通で使用する関数 commonFunc の定義
function commonFunc():void {
//毎フレーム 関数specialPlay を実行
mc.addEventListener(Event.ENTER_FRAME,specialPlay);
//stageからマウスアップ時に 関数onStageUp を実行
stage.addEventListener(MouseEvent.MOUSE_UP,onStageUp);
}

//関数specialPlay の定義
function specialPlay(e:Event):void {
//spdが正の数で mc内のフレームが最終フレームに達したとき
if (spd >= 0 && mc.currentFrame == mc.totalFrames) {
//mc内フレームをフレーム1に戻す
mc.gotoAndStop(1);
//spdが負の数で mc内のフレームがフレーム1に達したとき
} else if (spd < 0 && mc.currentFrame == 1) {
//mc内フレームを最終フレームに進める
mc.gotoAndStop(mc.totalFrames);
}
//mc内のフレームを spdフレーム 進めて停止
mc.gotoAndStop(mc.currentFrame + spd);
}

//関数onStageUp の定義
function onStageUp(e:MouseEvent):void {
//毎フレーム 関数specialPlay を実行するのをやめる
mc.removeEventListener(Event.ENTER_FRAME,specialPlay);
//stageからマウスアップ時に 関数onStageUp を実行するのをやめる
stage.removeEventListener(MouseEvent.MOUSE_UP,onStageUp);
//「mc」内タイムラインの再生を開始 (★要る?)
mc.play();
}
//==================================



特殊再生である
「高速逆再生」と「逆再生」と「高速再生」は結局どれも同じことをさせています。
メインは関数 specialPlay(エッチなプレーや変態プレーではありません) です。

同じことをさせるのですが,
それぞれのボタンによって
関数specialPlay を実行させるときの変数spd(スピード)の値を変えています。
この spd の値だけが違う部分です。

こうしておけば,ほとんど同じ関数を何度も定義する必要がなくなりますよね。
「AS3でムービークリップ再生・早送り・巻」の回答画像1
    • good
    • 0
この回答へのお礼

BlurFiltan 様
引き続きありがとうございます。
自力で頑張っていたのですが・・・・うまく動かず困り果てていました。
動きました。助かりますありがとうございます。
アクションスクリプトは、まだ理解できませんが負けずに勉強します。

お礼日時:2011/06/06 21:32

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