[AS3]マウスカーソルを動かさないと消えてくれるボタン
ってのを作りたかったのです。再生中とかに目障りと言うものあって。こちらのサイトで実装しました。
フォトストリーム ?眠っている写真に息吹を?
その際には、こちらが大変参考になりました。
Think About it: onMouseMove(1)
ただ、どうやらこちらActionScript2.0の模様。ActionScript3.0だといろいろ変わってるんだなーと。
気付いたところでは:
- アルファ値の設定は「_alpha」ではなくて「alpha」に
- アルファ値の範囲は「100?0」ではなくて「1?0」に
- タイマー機構も「setInterval」から「Timer」へ
この辺りを七転八倒しながら翻訳しつつこんな感じに。btn_maximizeは消したり出したりしたいボタンです。
var speed:Number = 0.1;
var A:Number = 1;
//中心の円が徐々に消える
function transMc(event:Event):void {
btn_maximize.alpha += ( A - btn_maximize.alpha) * speed;
if ( btn_maximize.alpha < 0.1){
btn_maximize.alpha = 0;
btn_maximize.visible = false;
soundBtn.visible = false;
Mouse.hide();
}
if ( btn_maximize.alpha > 0.98){
btn_maximize.alpha = 1;
}
}
//ここがsetIntervalによって呼び出され、上記transMcが繰り返される
function setTrans(e:TimerEvent):void {
A = 0;
addEventListener(Event.ENTER_FRAME, transMc);
}
//マウスが動く度に読み出される
addEventListener('mouseMove', resetButtonDispapper);
// タイマーリセット
function resetButtonDispapper(e:MouseEvent):void {
_timer.reset();
A = 1;
btn_maximize.visible = true;
btn_maximize.alpha = 0.9;
Mouse.show();
addEventListener(Event.ENTER_FRAME, setEnterframe);
}
// 4秒周期でボタンを非表示するタイミングを伺う
var _timer:Timer = new Timer(6000);
//マウスが動いているか止まっているかの判定の核
function setEnterframe(event:Event):void {
if(!_timer.running){
//addEventListenerで関数とイベントを関連付ける
_timer.addEventListener(TimerEvent.TIMER, setTrans);
//タイマースタート
_timer.start();
}
}
ロジック自体は参照先からほとんど変えてませんので説明はそちらを見ていただければと。
スポンサーサイト