AS3でボタンを無効にするように前回のエントリで書いたんですけどもう少し詳しく。
ある変数、例えばnowNumが0のときはボタンは効かない。とするとどこのイベントでremoveEventListenerするのか?と考えたとき、”ボタンをクリックしたとき”というイベントハンドラ内でやるのかなと思っていたけど次にaddEventListenerするタイミングがよくわからん。
で、考えたのが常に変数nowNumを監視する関数をつくればいいや!とおもったのでやってみました。
this.addEventListener(Event.ENTER_FRAME, judgeHandler);
//ボタン機能監視用関数
function judgeHandler(evt:Event):void {
if (nowNum >= 9) {
_next.removeEventListener(MouseEvent.CLICK, n_clickHandler);
_next.removeEventListener(MouseEvent.ROLL_OUT, n_rOutHandler)
_next.removeEventListener(MouseEvent.ROLL_OVER, n_rOverHandler);
_next.useHandCursor = false;
_next.gotoAndStop("disable");
}else {
_next.buttonMode = true;
_next.useHandCursor = true;
_next.addEventListener(MouseEvent.CLICK, n_clickHandler);
_next.addEventListener(MouseEvent.ROLL_OVER, n_rOverHandler);
_next.addEventListener(MouseEvent.ROLL_OUT, n_rOutHandler);
_next.gotoAndStop("up")
}
if (nowNum == 0) {
_prev.removeEventListener(MouseEvent.CLICK, p_clickHandler);
_prev.removeEventListener(MouseEvent.ROLL_OVER, p_rOverHandler);
_prev.removeEventListener(MouseEvent.ROLL_OUT, p_rOutHandler);
_prev.buttonMode = false;
_prev.gotoAndStop("disable")
}else {
_prev.buttonMode = true;
_prev.useHandCursor = true;
_prev.gotoAndStop("up");
_prev.addEventListener(MouseEvent.CLICK, p_clickHandler);
_prev.addEventListener(MouseEvent.ROLL_OVER, p_rOverHandler);
_prev.addEventListener(MouseEvent.ROLL_OUT, p_rOutHandler);
}
}
と設定しておいてp_clickHandlerでnowNum--、clickHandlerでnowNum++しています。
これでフレームが進むごとに監視してくれるのでOK。
この記事にトラックバックする