プロが教える店舗&オフィスのセキュリティ対策術

[1]~[17][18][19][20][21][22][23][24][25][26][27][28][29][30]
B     ●a
A   ●

上記のようなflaファイルがあります。
AはボタンでBはムービーです。
Aのボタンには以下のようなアクションスクリプトが設定されています。
--------------------
on(rollOut){
this.gotoAndPlay(18);
}
--------------------

Bの18フレームには以下のようなアクションスクリプトが設定されています。
--------------------
this.stop();
--------------------

Aのボタンの1度目のロールオーバーはきちんと意図した通りに動くのですが、
連続で2回やった時に意図した動きになりません。
時間を置いて再びやったり、違うボタンを触ってからやればきちんと動きます。
連続で2回やってもきちんと意図した通りの動きをさせるためにはどのようにすればいいのでしょうか?

A 回答 (8件)

[1]~[17][18][19][20][21][22][23][24][25][26][27][28][29][30]


B     ●
A   ●

ではなくて

[1]~[17][18][19][20][21][22][23][24][25][26][27][28][29][30]
B●
A●

の用同じ1フレーム目にして下さい
    • good
    • 0
この回答へのお礼

同じフレームにおいたら無事できました!
ありがとうございました!
これから細かいところを直していきたいと思います。

本当にたくさんおつきあいいただきありがとうございました!!

お礼日時:2003/04/24 18:54

ボタンAのスクリプト


on(rollOut){
//ロールアウト
_root.B.gotoAndPlay(0);
}


_root.B.gotoAndPlay(0); ではなくて
_root.B.gotoAndPlay(1); ですね

怪しい点はBのMCのインスタンス名ですね
Bではなく半角英数の小文字のbにして見てください

この回答への補足

ボタンAの17フレーム目に
this.stop();
が入っているのですがこれが原因とかでしょうか??

補足日時:2003/04/24 18:43
    • good
    • 0
この回答へのお礼

そうですか…残念です。
FLASHってバージョンでそんなに互換性がないんですね…

ボタンA
----------
on(rollOut){
//ロールアウト
_root.b.gotoAndPlay(1);
}
----------

ムービーBインスタンス名を「b」

に変更してみましたがダメでした…。

お礼日時:2003/04/24 18:22

MC:ムービークリップ



>ムービーBのインスタンス名を「B」にする。

これはMC自体に付けます。フレームにはつけません

>_root.B.gotoAndPlay(0);

ここで指定しているフレーム番号はBのMCの中のことを意味しています。

つまりBのMCの中には2つのムービーが存在することになります。

[BのMCの中]

制御  〇
オーバ用 ●-------------●a
アウト用           ●----------●a


〇---いきなりスタートしないようにストップする命令
●a---ムービの終了のためストップ命令



[カレントのフレーム]

制 御 〇
ボタン ●
BのMC●

〇---いきなりスタートしないようにストップする命令
    • good
    • 0
この回答へのお礼

[1]~[17][18][19][20][21][22][23][24][25][26][27][28][29][30]
B     ●
A   ●

ボタンAのスクリプト
on(rollOut){
//ロールアウト
_root.B.gotoAndPlay(0);
}


ムービーB
[1][2][3][4][5]
●     ●a
a:this.stop();

であっているのでしょうか?
正常に動かないのですが…。

お礼日時:2003/04/24 18:02

よくよく考えるともっと簡単にできそうですね


※Bのムービーのインスタンス名を「b」としてます。

[Aボタン]

on (rollOver) {
 //ロールオーバー時に表示するBムービーの開始フレーム
 _root.b.gotoAndPlay(2);
}
on (rollOut) {
 //ロールアウト時に表示するBムービーの開始フレーム
 _root.b.gotoAndPlay(24);
}


[ BのムービーMC ]

0フレーム---stop();
2フレーム---ロールオーバー時 ムービースタート
10フレーム---stop();
       ロールオーバー時 ムービーストップ

24フレーム---ロールアウト時 ムービースタート
30フレーム---stop();
       ロールアウト時 ムービーストップ


こんな感じでどうでしょうか?
ボタンの方でオーバした時アウトした時にことなる再生フレーム番号で再生しています
    • good
    • 0
この回答へのお礼

とりいそぎということで以下のようにしてみました。
(シーンのフレーム設定はそのままです。)

ムービーBのインスタンス名を「B」にする。
(この場合はフレームにつけるのでしょうか?それともムービー自体から指定してつけるのでしょうか?
今回は両方「B」にしてみました。)

ボタンAに以下のアクションスクリプトを指定

--------------------
on(rollOut){
//ロールアウト
_root.B.gotoAndPlay(0);
}
--------------------

しかし何も起こりません…。
_root.B.gotoAndPlay(0);
で指定した0というのはシーン上でのインスタンスBの0フレーム目ということでしょうか?
それともムービーBの0フレーム目ということなのでしょうか?

すいませんがよろしくお願いします。

お礼日時:2003/04/24 17:39

アクションスクリプトを使うことで単純化してみてはどうでしょうか?



例えばAのボタンをスイッチのように考えてみてはどうでしょうか?

変数xを利用して
ロールオーバーした時 x=1
ロールアウトした時に x=0
とします。

BのMCの方に下記のように判定しては?

onClipEvent (enterFrame) {
if(x==1){
//ロールオーバーした時に再生するフレーム番号
this.gotoAndPlay(18);
}
if(x==0){
//ロールアウトした時に再生するフレーム番号
this.gotoAndPlay(18);
}
}

BのMCの中の1フレームにしょっぱちに稼動しないように
this.stop();

ちょっと荒い説明になりましたがどうでしょうか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

ActionScriptで変数を使うのは初めてですので、わからないことが多いのですがやってみようと思います。

早速ですが…
ボタンAにはどのように記述すればいいのでしょうか?
on(rollOut){
 x==0;
}
のようにすればいいのでしょうか?

Bの18フレーム目には

onClipEvent(enterFrame){
if(x==0){
this.gotoAndPlay(18);
}
this.stop();

のようにしてみました。

ですが動きませんでした。。。
記述が逆でしょうか?

修正お願いします。

お礼日時:2003/04/24 17:17

う~ん すごくややこしいことをしている気がしますね



結局やりたいことは
Aのボタンのロールオーバ時とロールアウト時にそれぞれことなるムービーBが再生すればいいのですよね?

また間違っています?
    • good
    • 0
この回答へのお礼

はい、そんな感じです。
ロールオーバー時はボタンに、ロールアウト時はフレームに、という感じという違いだけです。

>う~ん すごくややこしいことをしている気がしますね

確かにそうですね。
何か他にいい方法はあるでしょうか?

お礼日時:2003/04/24 16:30

あら私は勘違いしていました・・・すまそん



AのボタンでBのムービーをコントロールしたいってことですよね?

>連続で2回やった時に意図した動きになりません。

ですからロールオーバーとロールアウトの2つが必要なのではないですか?
この場合はロールアウトしか定義してませんよね?

またまた誤解認識してたらごめんなさい
    • good
    • 0
この回答へのお礼

[1][2][3][4]~[17][18][19][20][21][22][23][24][25][26][27][28][29][30]
B            ●a
A    ●   ●                        ●


AはボタンでBはムービーです。
A
--------------------
on(rollOut){
this.gotoAndPlay(18);
}
--------------------

B
--------------------
this.stop();
--------------------

Aのボタンの「オーバー」にはムービーが設定されています。
ですが、ボタンではロールアウト時のムービーって指定できませんよね。
ムービーがカットアウトになっちゃうのでなんとかムービーを指定しようとして、
フレームを指定して飛ばすことを思いついたわけです。
最初はロールオーバー時のムービーもシーン上に作成していたのですが、
フレーム数が多くなってしまったので、ボタンに貼り付けました。
Bのムービーにはボタンのロールアウト時のムービーが入っています。
それでロールアウト時のみフレーム指定して飛ばすようにしたんですが、
指定ムービーと同じフレーム(この場合18フレーム目)で再度ロールアウトすると、
19フレーム目に飛んでしまうんです。
これをなんとか回避したいと思っています。

下手な説明ですがおわかりいただけたでしょうか?

よろしくお願いします。

お礼日時:2003/04/24 16:01

on(rollOut){


this.gotoAndSTOP(18);
}

にすればどうでしょうか
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

[1]~[17][18][19][20][21][22][23][24][25][26][27][28][29][30]
B     ●a
A   ●

Aのボタン
--------------------
on(rollOut){
this.gotoAndStop(18);
}
--------------------

Bの18フレーム
--------------------
this.stop();
--------------------

としてみましたが、どうも2回目(18フレーム目)がうまく動作しません。
(Bのムービーが出ない)

どうしたらいいでしょうか?

お礼日時:2003/04/24 13:21

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