アプリ版:「スタンプのみでお礼する」機能のリリースについて

A、B、・・・ボタン
シーンaa、シーンbb、シーンcc、・・・
があり
Aボタンを押すとシーンaaが再生され、ストップ
Bボタンを押すとシーンaaが逆再生されてからシーンcc後シーンbbに
という風に動く式だとどうなるでしょうか?
シーンではなく、外部swfでも逆再生できるのでしょうか?

A 回答 (1件)

シーンというのは,Flashでいう「シーン 1」「シーン 2」… のシーンのことですよね。


最初に「シーン 1」が出てきて,そこに「Aボタン」,「Bボタン」があると想定して書きます。
また,シーンbb=「シーン 2」,シーンcc=「シーン 3」 として回答します。

質問されてる内容を,それだけをするなら,単純に,

「シーン 1」の1フレームに

stop();

「Aボタン」に

on (release) {
play();
}

「シーン 1」の最終フレームをキーフレームにして

stop();

とし,

「Bボタン」に

on (release) {
gotoAndStop(「シーン 1」の最終フレーム数);
this.onEnterFrame = function() {
gotoAndStop(this._currentframe - 1);
if (this._currentframe == 1) {
gotoAndPlay("シーン 3", 1);
this.onEnterFrame = null;
}
};
}

「シーン 3」の1フレーム目に

play();

「シーン 3」の最終フレームに

gotoAndPlay("シーン 2", 1);

「シーン 2」の最終フレームに

stop();

と書けば良いです。

----------------------------------------

もっとさらにボタンが増えて,それぞれのボタンをクリックしたら,それぞれ別の再生のしかたをする場合は

「シーン 1」の1フレームに

if (flag == "B") {
gotoAndPlay("シーン 3", 1);
} else {
stop();
}

「Aボタン」に

on (release) {
flag = "A";
play();
}

「シーン 1」の最終フレームをキーフレームにして

if (flag == "A") {
stop();
}

とし,

「Bボタン」に

on (release) {
flag = "B";
gotoAndStop(「シーン 1」の最終フレーム数);
this.onEnterFrame = function() {
gotoAndStop(this._currentframe - 1);
if (this._currentframe == 1) {
this.onEnterFrame = null;
}
};
}

「シーン 3」の最終フレームに

if (flag == "B") {
gotoAndPlay("シーン 2", 1);
}

「シーン 2」の最終フレームに

if (flag == "B") {
stop();
}

というふうに変数flagを作り,ボタンにそれぞれのフラグを立てさせて,そのフラグの値によって,
フレームのスクリプトを変えるのが楽だと思います。

---------------------------------------

>> シーンではなく、外部swfでも逆再生できるのでしょうか?

できます。
外部swfを読み込んだムービークリップに,進み方を命令すれば良いだけです。


例として今作った,フラグ入りのSWFを仮に「001.swf」とし,それを読み込むSWFを作ります。

新しいムービーに「AAA」というインスタンス名のムービークリップを作り,
1フレーム目には,

loadMovie("001.swf", "AAA");

と書いて,「001.swf」を「AAA」に読み込ませます。

それを動かすためのボタンを作り,そのボタンに,

on (release) {
_root.AAA.flag = "B"
_root.AAA.gotoAndStop(「シーン 1」の最終フレーム数);
this.onEnterFrame = function() {
_root.AAA.gotoAndStop(_root.AAA._currentframe-1);
if (_root.AAA._currentframe == 1) {
_root.AAA.gotoAndPlay(***注意***);
this.onEnterFrame = null;
}
};
}

と書けば,ロードしたムービーを制御できます。
ロードしたムービーのコントロールと前のコントロールの書き方の違いは,
ターゲットのパスを,ムービークリップのインスタンス名にするところが違うのと,
_root.AAA.gotoAndPlay(***注意***);
の部分です。
この「***注意***」の部分は「シーン 1」から数えた総フレーム数で書くと指定のシーンにジャンプできます。

例えば「シーン 1」が20フレーム,「シーン 2」が30フレームあったとして,
「シーン 3」の1フレームにジャンプしたい場合は,ココの数字を,
20+30+1=51で,

_root.AAA.gotoAndPlay(51);

としてください。

内容はすごく簡単なことなのですが,説明がややこしくなってしまいすみません。
    • good
    • 0
この回答へのお礼

sassakunさん

丁寧にお答えいただいてありがとうございました。
外部swfでも上手く動かすことが出来ました。
自分でかいたスクリプトだと_currentframeのとり方とかがおかしかったようです。
回答有難うございました。

お礼日時:2005/05/26 23:59

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