トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     ボタンを無効化するためには?
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Digi29
Åê¹ÆNo.12663
投稿日時: 2004-11-25 10:04
新米
居住地:
投稿: 6
使用環境:
Windows XP Professional
Flash MX 2004
ボタンを無効化するためには?
Flash初心者です。

ボタンをMovieClipが再生されている間は無効化したいのですが
どうすればいいのかわかりません。
ご教授のほどよろしくお願いします。

まず、1フレームにはNow LoadingのLoding Movieを置いてます。
Loadが終わると、2フレームに移ります。
この2フレームには、MovieClipとボタンを置いており
ボタンを押すとMovieClipの範囲の部分が別の画像に切り替わる
ようにしております。その別の画像自体は3,4,5,6フレームのような
感じでボタンでそれぞれジャンプできるようになっています。
問題は、2フレーム目にボタンとMovieClipを置いてあるため
ボタンを押すとMovieClipから画像に切り替わってしまい
全部のMovieが再生されないうちに画面が切り替わることです。

このMovieClip自体は最後のフレームのところでループしないように
this.stop();を入れております。
これをなんとかしてMovieClipの再生が終了後にボタンが動くように
したいのですが、できますでしょうか?
よろしくお願いします。
空野大二郎
Åê¹ÆNo.12666
投稿日時: 2004-11-25 10:58
職人
居住地: 愛知
投稿: 389
使用環境:
 XP:Home
FlashMX
IE6.0+FlashPlayer7,0,19
CPU:Pentium4 2.26GHz
メモリ:1,024MB
Re: ボタンを無効化するためには?
まいど。

 ボタンの名前、個数、記述されたスクリプトが不明なため、直接解答はできません。
 なぜなら、こちらで同じ状況を再現できないためです。

 それはともかく、表題については「ボタンプロパティ」を変更
することで実現が可能です。
//_rootにボタンを配置、インスタンス名"test_btn"
とする。
//_rootの2フレーム目にフレームアクションを記述
_root.test_btn.enabled = false;//ボタンを無効化する。
//表示したままボタンを無効化するときに使う。
 
_root.test_btn._visible = false;//ボタンを非表示にする。
//表示自体を消して、ボタンを無効化する。


状況に応じて、使い分けてみて下さい。
引用:
ボタンを無効化するためには?


----------------
空野 大二郎 アニメーター作家
桜の道

Digi29
Åê¹ÆNo.12668
投稿日時: 2004-11-25 13:24
新米
居住地:
投稿: 6
使用環境:
Windows XP Professional
Flash MX 2004
Re: ボタンを無効化するためには?
お忙しいところ返信ありがとうございます。

ボタンは6個あってそれぞれb1,b2,b3,b4,b5,b6という
インスタンス名をつけています。
ボタンには、

on (rollOver) {
_root.gotoAndStop(8);
_root.切り替わるインスタンス名.gotoAndPlay(2);
}
on (rollOut) {
_root.gotoAndStop(2);
}
on (release) {
this.getURL("a.html");
}


_root.gotoAndStop(8);の部分がボタンによって飛び先の
フレームが違います。

2フレームにあるMovieClipはインスタンス名はfirstと
つけています。これ自体には何も記述はしておりません。
Scriptレイヤーの2フレーム目にはthis.stop();を入れてます。

まだ作業していないのでわからないのですが

//_rootの2フレーム目にフレームアクションを記述
_root.test_btn.enabled = false;//ボタンを無効化する。
//表示したままボタンを無効化するときに使う。

をした場合、確かにMovieClip再生中にボタンは効かなくなりますが
再生後もボタンが効かないままになってしまいます
2フレーム目に入れてあるMovieClipの再生が終わったあとに
ボタンを使えるようにするためにはどうしたらよいのでしょうか?
MovieClipにスクリプトを記述して再生終了するまでは
ボタンを使えなくするというようなScriptを入れればいいのでしょうか?

ちなみに2フレーム目に入れてあるMoviClip自体は140フレーム
あるMovieでこのMovie自体は140フレーム目に
Scriptレイヤー内にthis.stop();を記述してループ再生しないようにしております。

よろしくお願いします。引用:

空野大二郎さんは書きました:
まいど。

 ボタンの名前、個数、記述されたスクリプトが不明なため、直接解答はできません。
 なぜなら、こちらで同じ状況を再現できないためです。

 それはともかく、表題については「ボタンプロパティ」を変更
することで実現が可能です。
//_rootにボタンを配置、インスタンス名"test_btn"
とする。
//_rootの2フレーム目にフレームアクションを記述
_root.test_btn.enabled = false;//ボタンを無効化する。
//表示したままボタンを無効化するときに使う。
 
_root.test_btn._visible = false;//ボタンを非表示にする。
//表示自体を消して、ボタンを無効化する。


状況に応じて、使い分けてみて下さい。
引用:
ボタンを無効化するためには?
Digi29
Åê¹ÆNo.12670
投稿日時: 2004-11-25 14:00
新米
居住地:
投稿: 6
使用環境:
Windows XP Professional
Flash MX 2004
Re: ボタンを無効化するためには?
追記です。

もっとわかりやすく言えば2フレームに置いてある
MovieClipの140フレームまで再生されないうちは
ボタンを無効化するということです。
ボタン自体はシーン1の2フレーム目に置いてます。

わかりにくい説明で申し訳ありません
空野大二郎
Åê¹ÆNo.12672
投稿日時: 2004-11-25 14:58
職人
居住地: 愛知
投稿: 389
使用環境:
 XP:Home
FlashMX
IE6.0+FlashPlayer7,0,19
CPU:Pentium4 2.26GHz
メモリ:1,024MB
Re: ボタンを無効化するためには?
まいど。
大変ていねいなご説明、ありがとうございます。
これで、そちらの置かれている状況が把握できました。

そのとおりです。
引用:

Digi29さんは書きました:
まだ作業していないのでわからないのですが

//_rootの2フレーム目にフレームアクションを記述
_root.test_btn.enabled = false;//ボタンを無効化する。
//表示したままボタンを無効化するときに使う。

をした場合、確かにMovieClip再生中にボタンは効かなくなりますが
再生後もボタンが効かないままになってしまいます

 ボタンを無効化、有効化する方法が分かったのですから、
どのタイミングで有効にしたいか考える必要があります。

 つまり、ムービークリップ"_root.first"が最終フレーム140まで
表示したあとに、ボタンを有効にしたい、それ以前は無効にしたい
という結論に達しましたね。
引用:

Digi29さんは書きました:
もっとわかりやすく言えば2フレームに置いてある
MovieClipの140フレームまで再生されないうちは
ボタンを無効化するということです。


 まず、コメントを使って日本語でスクリプトを記述してみます。
 注目していただきたいのは、どのイベントでボタンを切り替えるかです。
//_rootの2フレーム目の、フレームスクリプトに記述。
//ボタン、"b1,b2,b3,b4,b5,b6"の有効・無効を切り替える関数
this.buttonOnOff = function(bButton) {
	if (bButton == true) {
		//それぞれのボタンを有効化
	} else {
		//それぞれのボタンを無効化
	}
};
 
//最初に、ボタンを無効化する。
this.buttonOnOff(false);
 
//"_root.first"の最終フレーム140のフレームスクリプトに記述
//最終フレームを表示したあと、ボタンを有効にする。
_parent.buttonOnOff(true);


 あとは、"buttonOnOff()"関数の中に、制御したいボタンの処理を
記述するだけです。
this.buttonOnOff = function(bButton) {
	if (bButton == true) {
		//それぞれのボタンを有効化
		this.b1.enabled = true;  //b1を有効にする
		//b2につづく
	} else {
		//それぞれのボタンを無効化
		this.b1.enabled = false;  //b1を無効にする
		//b2につづく
	}
};


 最後に、抱える問題があって、それを解くカギが用意されたのですから、
答えを聞く前にためしてみることをオススメします。
 どんなタイミングで何を実行すればよいか、試行錯誤することが、
初心者卒業のかてになるでしょう。
 何事も経験です。
引用:

Digi29さんは書きました:
まだ作業していないのでわからないのですが


----------------
空野 大二郎 アニメーター作家
桜の道

Digi29
Åê¹ÆNo.12674
投稿日時: 2004-11-25 15:41
新米
居住地:
投稿: 6
使用環境:
Windows XP Professional
Flash MX 2004
Re: ボタンを無効化するためには?
返信ありがとうございます。

これからは答えを聞く前に作業をするようにいたします。

さっそく、上記のスクリプトを入れて作業をしたところ
確かにMovieClipの140フレームまで再生が終わった後、
ボタンが動きました。しかし、2回目のロールオーバーで
ボタンが無反応になりました。このMovieClipはスプラッシュ
ムービーみたいなもので、フレームの一番最後の部分はサイトの
タイトル画像みたいなものに変わるのでロールオーバーした後は
常にこの画面が出ている状態にしたいです。

試しに自分で140フレーム目に
_parent.buttonOnOff(true);
gotoAndPlay(140);

このような感じにしましたがこれだとMovieがループを
してしまいます。

_parent.buttonOnOff(true);
gotoAndStop(140);

これだと2回目以降のロールオーバーが無反応になります。

ちなみにシーン1の2フレーム目には

this.buttonOnOff = function(bButton) {
if (bButton == true) {
//それぞれのボタンを有効化
this.b1.enabled = true; //b1を有効にする
//b2につづく
} else {
//それぞれのボタンを無効化
this.b1.enabled = false; //b1を無効にする
//b2につづく
}
};

this.buttonOnOff(false);

this.stop();

このように入れております。

b1のボタンには

on (rollOver) {
_root.gotoAndStop(3);
_root.切り替えるインスタンス名.gotoAndPlay(2);
}
on (rollOut) {
_root.gotoAndStop(2);
}
on (release) {
this.getURL("individual/index.html");
}

もしかしたら2フレーム目に戻るのがおかしいのかなと
考えております。どうしたらよろしいでしょうか?
よろしくお願いします。
Digi29
Åê¹ÆNo.12675
投稿日時: 2004-11-25 16:07
新米
居住地:
投稿: 6
使用環境:
Windows XP Professional
Flash MX 2004
Re: ボタンを無効化するためには?
問題の自己解決ができました!
ありがとうございます

さきほどの問題については

MovieClipの139フレーム目に

_parent.buttonOnOff(true);

140フレーム目に

_parent.buttonOnOff(true);
gotoAndPlay(139);

これを入れて139と140フレーム目をループさせる方法で
解決しました。もちろん、139フレーム目と140フレーム目は
まったく同じ状態なので見た目的には変化はありません。

お忙しい中ありがとうござました
空野大二郎
Åê¹ÆNo.12676
投稿日時: 2004-11-25 16:21
職人
居住地: 愛知
投稿: 389
使用環境:
 XP:Home
FlashMX
IE6.0+FlashPlayer7,0,19
CPU:Pentium4 2.26GHz
メモリ:1,024MB
Re: ボタンを無効化するためには?
まいど。

 おっと、解決されてしまいましたね。
 おめでとうございます。
 では、後日談としてお読み下さい。

 失礼しました。お察しの通りです。
 ボタンのロールアウト実行時に
_root.gotoAndStop(2);
が実行されて、_rootのフレームスクリプトが再び実行されている、
this.buttonOnOff(false);
ボタンを無効化する仕組みになってしまいました。
引用:
Digi29さんは書きました:
もしかしたら2フレーム目に戻るのがおかしいのかなと
考えております。どうしたらよろしいでしょうか?
よろしくお願いします。


 1:簡潔な処法は、画像の表示されているフレームを一つずつずらし、
ロールアウトで戻ってくるときは"_root.gotoAndStop(3);"になるように
して、2フレーム目に戻らないようにすることです。
 (もちろん、ボタンのgotoAndStop()の指定フレームは修正が必要に
なります。)

 2:あとは、いっそ"_root.first"が再生されたタイミングで
"_root.buttonOnOff(false)"を実行すると、最初だけボタンを無効化
できます。

上記の修正が成功すれば、"_root.first"の140フレーム目の
フレームスクリプトは、ボタンを有効にしてthis.stop()で結構です。

_parent.buttonOnOff(true);
this.stop();

ここでも解決できましたか!
引用:
Digi29さんは書きました:
試しに自分で140フレーム目に
_parent.buttonOnOff(true);
gotoAndPlay(140);

このような感じにしましたがこれだとMovieがループを
してしまいます。

_parent.buttonOnOff(true);
gotoAndStop(140);


 今回のように、1度だけ実行したいスクリプトを、"gotoAndStop()"
などで何度も実行してしまうのは、わたしが良くしてしまいがちなミスです。
 お騒がせしました。


----------------
空野 大二郎 アニメーター作家
桜の道

Digi29
Åê¹ÆNo.12677
投稿日時: 2004-11-25 16:39
新米
居住地:
投稿: 6
使用環境:
Windows XP Professional
Flash MX 2004
Re: ボタンを無効化するためには?
soranoさん

どうもありがとうございました。
後日談に書かれていることも後ほどチャレンジしたいと
思っております。本当に助かりました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops