[AS3] BasicButton
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
public class BasicButton {
public static const UP:String = “up”;
public static const OVER:String = “over”;
public static const DOWN:String = “down”;
public static const DISABLE:String = “disable”;
private var _mc:MovieClip;
private var _handler:Function;
private var _enabled:Boolean; // enable/disable
public function BasicButton(mc:MovieClip, handler:Function=null) {
_mc = mc;
_handler = handler;
_enabled = true;
_mc.gotoAndStop(UP);
_mc.buttonMode = true;
_mc.useHandCursor = true;
_mc.addEventListener(MouseEvent.MOUSE_OVER, myMouseOver);
_mc.addEventListener(MouseEvent.MOUSE_OUT, myMouseOut);
_mc.addEventListener(MouseEvent.MOUSE_DOWN, myMouseDown);
}
/* CLEANUP ******************************************************************/
public function destroy():void {
_mc.removeEventListener(MouseEvent.MOUSE_OVER, myMouseOver);
_mc.removeEventListener(MouseEvent.MOUSE_OUT, myMouseOut);
_mc.removeEventListener(MouseEvent.MOUSE_DOWN, myMouseDown);
}
/* SETTERS ******************************************************************/
public function enable(b:Boolean):void {
_enabled = b;
_mc.buttonMode = _enabled;
_mc.useHandCursor = _enabled;
if (_enabled) {
_mc.gotoAndStop(UP);
}
else {
_mc.gotoAndStop(DISABLE);
}
}
/* HANDLERS *****************************************************************/
private function myMouseOver(e:MouseEvent):void {
if (_enabled) { // if it’s not disabled…
_mc.gotoAndStop(OVER);
}
}
private function myMouseOut(e:MouseEvent):void {
if (_enabled) { // if it’s not disabled…
_mc.gotoAndStop(UP);
}
}
private function myMouseDown(e:MouseEvent):void {
if (_enabled) { // if it’s not disabled…
_mc.gotoAndStop(DOWN);
_mc.stage.addEventListener(MouseEvent.MOUSE_UP, myMouseUp);
}
}
private function myMouseUp(e:MouseEvent):void {
_mc.stage.removeEventListener(MouseEvent.MOUSE_UP, myMouseUp);
if (_mc.hitTestPoint(_mc.stage.mouseX, _mc.stage.mouseY)) {
_mc.gotoAndStop(UP);
_handler();
}
else {
_mc.gotoAndStop(UP);
}
}
}
}
