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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonで、tkinterとpillowの組み合わせ 2 2022/08/16 17:42
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで改行の入ったデータの正規...
-
ロールオーバーで下画像を表示...
-
別のアプリケーションのテキス...
-
python ボタンを押すと複数の関...
-
テキストボックスの中身をリセ...
-
VBScriptでMsgBoxのYesNoボック...
-
変数に256文字以上のテキストを...
-
フォームの生成と破棄
-
四乗根を英語で言うと・・・
-
DataTableの件数を取得したい
-
YOASOBI
-
flashのおみくじのような(4桁...
-
ADに参加していないPCからADサ...
-
ランダムに4桁の数字を表示する...
-
画面の範囲選択
-
ダブルクリックと2回クリックの...
-
'2465'指定した式で参照してい...
-
VB6.0のHideのバグ?
-
PythonでSetWindowPosを使うに...
-
【Photoshop】レイヤー効果の境...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで改行の入ったデータの正規...
-
VBAユーザーホームテキストボッ...
-
外部SWFファイルを再生バーでコ...
-
縦横比率のを変えずに画像のサ...
-
テキストファイルから読み込ん...
-
自由線とレイヤー画面との位置関係
-
ピクチャーコントロールのデバ...
-
四角形の端っこをドラッグした...
-
AS3でうまく動作しません
-
看護師です。体温表のマクロを...
-
AS3.0 でフェードイン、
-
ステージの背景画像のみ拡大縮...
-
AS3 mc0~5をまとめて処理する
-
AS3.0でマウスボタンの状態を調...
-
AS3.0 設置した画像を次のラベ...
-
外部より取り込んだ.swfのサイ...
-
spriteで直線を引いたときに線...
-
xmlから作ったサムネールを移動...
-
Flash マウスの位置で速さの変...
-
flash ブラウザのサイズに合わ...
おすすめ情報