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

Flash8を使っています。
ムービーを早送りと巻き戻しボタンで制御したいのです。

シーン1には120フレームあり、シーン2には150フレームあります。
巻き戻しはそれぞれのシーンの1フレーム目まで、早送りは最後のフレーム(シーン1なら120、シーン2なら150)までとします。

ボタンを押している間だけ早送り(巻き戻し)をして、離した時はその位置で再生をストップしたいのですが、どの本を読んでも分からず困っています。

どうか教えてください。
よろしくお願い致します。

A 回答 (1件)

ボタンを押している間、フレームを進ませるという処理を繰り返し実行させればできます。



setIntervalを使用します。
一定の間隔(ミリ秒)で指定した処理を繰り返してくれます。1000ミリ秒=1秒です。
ボタンを押したときにsetIntervaに50ミリ秒間隔で5フレームずつ動かしてくれと頼んで
ボタンを離したときに動かすのをやめさせます。
もちろん何ミリ秒間隔で何フレーム動かすかは自分で決められます。

早送りボタンと巻き戻しボタンをフレームに配置します。
インスタンス名はokuru_btn、modosu_btnとしてください。
以下のASをフレームにコピペしてください。

_root.stop();
//
// setIntervalをやめるときに使用
var id:Number;
// 送り戻しする間隔
var Interval:Number = 50;
// 送り戻しするフレーム数
var moveFrame = 5;
// Interval=50でmoveFrame=5の場合、
// 50ミリ秒に5フレームずつ動く
//
//-------------------------------------
// フレーム移動させる関数(setIntervalで呼び出す)
// m : 移動させるフレーム数
// (早送り時は正の数、巻き戻し時は負の数)
//-------------------------------------
function Move(m:Number) {
if (_root._currentframe+m<1) {
//移動先が1より小さい場合1フレーム目に移動
_root.gotoAndStop(1);
} else {
_root.gotoAndStop(_root._currentframe+m);
}
}
//-----------------------
// 送り戻しする関数
// c=0 : 送り戻し停止
// c=1 : 早送り
// c=-1: 巻き戻し
//-----------------------
function Control(c:Number) {
if (c == 0) {
clearInterval(_root.id);
} else {
_root.id = setInterval(_root.Move, _root.Interval, c*_root.moveFrame);
//setIntervalを実行した直後にMove関数は呼ばれない。
//(Move関数が呼ばれるのは_root.Intervalミリ秒後) なので自分で呼ぶ
_root.Move(c*_root.moveFrame);
}
}
//早送りボタンを押したとき
_root.okuru_btn.onPress = function() {
_root.Control(1);
};
//巻き戻しボタンを押したとき
_root.modosu_btn.onPress = function() {
_root.Control(-1);
};
//早送りボタンと巻き戻しボタンを離したとき
//(onReleaseはマウスをボタンの上で離したときで
// onReleaseOutsideはボタンの外側で離したとき)
_root.okuru_btn.onRelease
= _root.okuru_btn.onReleaseOutside
=_root.modosu_btn.onRelease
=_root.modosu_btn.onReleaseOutside=function () {
_root.Control(0);
};
    • good
    • 0
この回答へのお礼

お礼が大変遅くなり申し訳ありませんでした。
このスクリプトをコピペして無事動きました。いつかこのスクリプトが理解できるようになりたいです。本当にありがとうございました。

お礼日時:2007/04/12 22:35

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