

AS3.0 でフェードイン、フェードアウトを繰り返したいんです。
_btnをマウスオーバーするとimg_mcがフェードインし、
_btnをマウスアウトするとimg_mcがフェードアウトするというものをつくりたいのですが、
下記スクリプトだと一通り動作を完了すると、ボタンにマウスを持っていっても反応しなくなります。
繰り返し動作させるにはどうしたらよいのでしょうか?
var img_mc:MovieClip;
img_mc.alpha = 0;
_btn.addEventListener(MouseEvent.MOUSE_OVER,xClick0);
function xClick0(evt){
img_mc.addEventListener(Event.ENTER_FRAME,imgAlpha);
function imgAlpha(event:Event){
img_mc.alpha += 0.05; //スピード
if (img_mc.alpha > 1){
img_mc.removeEventListener(Event.ENTER_FRAME,imgAlpha);
}
}
}
_btn.addEventListener(MouseEvent.MOUSE_OUT,xClick);
function xClick(evt){
img_mc.addEventListener(Event.ENTER_FRAME,imgAlpha2);
function imgAlpha2(event:Event){
img_mc.alpha -= 0.05; //スピード
if (img_mc.alpha == 0){
img_mc.removeEventListener(Event.ENTER_FRAME,imgAlpha2);
}
}
}
No.1ベストアンサー
- 回答日時:
まず alpha の値ですが
この alpha はすごくアナログ的なものなのです。
例えばフラグ的に使うことはできません。
例:「alphaが0だったら1にする 1だったら0にする」
というようなことをするときに alpha の値は使えません。
雰囲気で言えば 「alpha=1」 は 「水1リットル」 みたいなものです。
実体として「正確に 水1リットル を汲み取れる人や装置」はこの世に存在しません。
日常生活での 水1リットル は必ず誤差を含みます。
正確な 水1リットル は数学的な概念として存在するだけです(理科的には存在しません)。
というわけで,
alpha の値がキッチリと 0 になることなどまずないので
if (img_mc.alpha == 0){
img_mc.removeEventListener(Event.ENTER_FRAME,imgAlpha2);
}
この
if(img_mc.alpha == 0)
がダメです。
その上に書かれていらっしゃる
if (img_mc.alpha > 1)
と同じように
if(img_mc.alpha <= 0)
または
if (img_mc.alpha < 0)
のようにする必要があります。
==================
あと
img_mc の alpha が 0→1 や 1→0 と "変化している最中" に
_btn から マウスオーバー したり マウスアウト された場合の処理が抜けていますね。
それと function の定義場所がおかしかったりもします。
その辺りのことも入れると
スクリプトは次のようになります。
-----------------------
var img_mc:MovieClip;
img_mc.alpha = 0;
_btn.addEventListener(MouseEvent.MOUSE_OVER,xClick0);
function xClick0(evt) {
img_mc.removeEventListener(Event.ENTER_FRAME,imgAlpha2);
img_mc.addEventListener(Event.ENTER_FRAME,imgAlpha);
}
function imgAlpha(event:Event) {
img_mc.alpha += 0.05;//スピード
if (img_mc.alpha>1) {
img_mc.removeEventListener(Event.ENTER_FRAME,imgAlpha);
}
}
_btn.addEventListener(MouseEvent.MOUSE_OUT,xClick);
function xClick(evt) {
img_mc.removeEventListener(Event.ENTER_FRAME,imgAlpha);
img_mc.addEventListener(Event.ENTER_FRAME,imgAlpha2);
}
function imgAlpha2(event:Event) {
img_mc.alpha-=0.05;//スピード
if (img_mc.alpha==0) {
img_mc.removeEventListener(Event.ENTER_FRAME,imgAlpha2);
}
}
-----------------------

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
uwscでExcelに自動記入
-
大学からの課題をやるのに、Ado...
-
スマホでサイトの画像を長押し→...
-
アメブロで音声ファイルを貼る方法
-
FLASHでゲームを作っていた人は...
-
この曲はなんでしょう?
-
laptop go2からの買い替え、lap...
-
スクリップト
-
私のコンピューター上のファイ...
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
フラッシュゲームアーカイブ2
-
ウェブサイトで Flash が事実上...
-
Flashコンテンツを使ったWebサイト
-
Flash Playerのサポートが終了
-
Form内のselectを連動させるに...
-
Flashをブロックしないで
-
ダウンロードしたデジブックはa...
-
ad or script について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで改行の入ったデータの正規...
-
VBAユーザーホームテキストボッ...
-
代入しない文字の連結方法
-
文字列の分解・格納
-
アンケートについて
-
FLASHの初歩のようで、載ってない
-
【ActionScript】createEmptyMo...
-
ピクチャーコントロールのデバ...
-
コンプトン散乱について
-
コンボボックスでのMCの制御
-
自由線とレイヤー画面との位置関係
-
外部swf(jpg)に対するLoading表示
-
FLASHでスロットゲームを作りた...
-
AS3.0でマウスボタンの状態を調...
-
サムネイルをクリックすると拡...
-
テキストファイルから読み込ん...
-
flash as3 ムービークリップの...
-
ActionScript - 複数の空ムービ...
-
縦横比率のを変えずに画像のサ...
-
Flashで外部jpgファイルをmcに...
おすすめ情報