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

初めまして。
初心者につき、基本的な事だとは思うのですが、調べても分からなかったため、こちらで質問させて頂きたいと思います。

3つのムービークリップ(a_mc,b_mc,c_mc)【フレーム数30】と、
各々を再生させるためのボタン(A,B,C)を使って、

b_mcを再生中にAのボタンを押すと、b_mcを巻き戻した後で、
a_mcを再生するといった感じで3すくみのような状態にしたいのですが、b_mcの巻き戻しとa_mcの再生が同時に行われてしまいます。

現在のActionScriptは以下のようなものなのですが、どなたかご教授願えませんでしょうか?
よろしくお願いいたします。

ボタンAのスクリプト
on (release) {

//Cの巻き戻し
_root.c_mc.onEnterFrame = function() {
if (this._currentframe>=2) {
this.prevFrame();}
else
{delete this.onEnterFrame}
}
//Bの巻き戻し
_root.b_mc.onEnterFrame = function() {
if (this._currentframe>=2) {
this.prevFrame();}
else
{delete this.onEnterFrame}
}
//BでもCでもないときの判別式?

//Aの再生
_root.a_mc.onEnterFrame = function() {
if (this._currentframe<=29){
this.gotoAndPlay(this._currentframe);
delete this.onEnterFrame}
}
}

A 回答 (2件)

たぶんこれで行けると思います。



a_mc を動かすボタンに書くスクリプト

on (release) {

// カウント用変数 cnt の初期化
cnt = 0;

//Cの巻き戻し
_root.c_mc.onEnterFrame = function() {
if (this._currentframe>=2) {
this.prevFrame();
} else {
// カウント用変数 cnt に 1 を加算
cnt++;
// もし cnt が 2 であれば
if (cnt == 2) {
// a_mc を再生
_root.a_mc.play();
}
delete this.onEnterFrame;
}
};

//Bの巻き戻し
_root.b_mc.onEnterFrame = function() {
if (this._currentframe>=2) {
this.prevFrame();
} else {
// カウント用変数 cnt に 1 を加算
cnt++;
// もし cnt が 2 であれば
if (cnt == 2) {
// a_mc を再生
_root.a_mc.play();
}
delete this.onEnterFrame;
}
};
}



ちなみに
b_mc を動かすボタンのスクリプト

on (release) {

// カウント用変数 cnt の初期化
cnt = 0;

//Aの巻き戻し
_root.a_mc.onEnterFrame = function() {
if (this._currentframe>=2) {
this.prevFrame();
} else {
// カウント用変数 cnt に 1 を加算
cnt++;
// もし cnt が 2 であれば
if (cnt == 2) {
// b_mc を再生
_root.b_mc.play();
}
delete this.onEnterFrame;
}
};

//Cの巻き戻し
_root.c_mc.onEnterFrame = function() {
if (this._currentframe>=2) {
this.prevFrame();
} else {
// カウント用変数 cnt に 1 を加算
cnt++;
// もし cnt が 2 であれば
if (cnt == 2) {
// b_mc を再生
_root.b_mc.play();
}
delete this.onEnterFrame;
}
};
}
    • good
    • 0
この回答へのお礼

BlurFiltan様、お返事が遅くなってしまい申し訳ございません。
ご教授頂いたスクリプトで無事に作動致しました。

実は最初にお返事に気付かず、
ムービークリップを3フレームに配置
ボタンも各々キーフレームを作成し、フレーム毎にスクリプトを変える
という全くスマートでは無い方法で作成して満足してました(苦笑)

ActionScriptは奥が深いですね。
本当に参考になりました。
ありがとうございます。

↓不細工な力技…
//b_mcの入っているフレーム(2)でボタンAを押した場合

on (release) {
//b_mcの巻き戻し
_root.b_mc.onEnterFrame = function() {
 if (this._currentframe>=2) {
 this.prevFrame();}

 else{
 delete this.onEnterFrame

 //a_mcの入っているフレーム(1)の再生
 gotoAndPlay(1)
_root.down_mc.onEnterFrame = function() {

 if (this._currentframe<=40){
 this.gotoAndPlay(this._currentframe);
 delete this.onEnterFrame}
 }
 };
 }
}

お礼日時:2008/09/09 19:25

以下、新規ファイルでひとまず試してから応用してね。



まず_rootに30フレームのムービークリップを作って下さい。
モーショントゥイーンさせておくと分かりやすいかもよ。

それを右に2つ複製し、それぞれA・B・Cと名付けます。
A・B・Cを下に複製し、D・E・Fと名付けます。

_root上に6つのムービークリップがある事を確認して、
_rootのフレームに以下を記述。

//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
M_ARY = [A, B, C];
B_ARY = [D, E, F];
for (var i = 0; i < M_ARY.length; i++) {
M_ARY[i].stop();
B_ARY[i].stop();
B_ARY[i].MC = M_ARY[i];
M_ARY[i].onEnterFrame = function() {
if (this.FLG != 1) {
this.gotoAndStop(this._currentframe - 1);
} else {
this.gotoAndStop(this._currentframe + 1);
}
};
B_ARY[i].onRelease = function() {
for (var i = 0; i < _root.M_ARY.length; i++) {
_root.M_ARY[i].FLG = 0;
}
this.MC.FLG = 1;
};
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    • good
    • 0
この回答へのお礼

zari51様

その作業手順から、何やら魔法でも見ているか、詐欺にでも遭ったような気分でした(笑)

巻き戻し終了後に任意のムービークリップ再生、というのが同時になってしまいましたが、それでもActionScriptの奥深さを感じました。

今後、一生懸命勉強していきたいと思います。
ありがとうございます。

お礼日時:2008/09/09 19:42

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