|
/** |
|
* Name: tom Davies |
|
* Date: 04/05/12 |
|
* Time: 10:08 |
|
*/ |
|
package com.accumulate.common.utils { |
|
import com.accumulate.common.signal.Signal; |
|
|
|
import flash.display.Sprite; |
|
import flash.events.Event; |
|
import flash.events.MouseEvent; |
|
|
|
public class ButtonHelper { |
|
|
|
private const _mouseDown:Signal = new Signal(); |
|
private const _mouseUp:Signal = new Signal(); |
|
private const _mouseOver:Signal = new Signal(); |
|
private const _mouseOut:Signal = new Signal(); |
|
private const _clicked:Signal = new Signal(); |
|
private var _enabled:Boolean; |
|
private var _skin:Sprite; |
|
|
|
public function ButtonHelper(skin:Sprite) { |
|
_skin = skin; |
|
skin.useHandCursor = true; |
|
skin.buttonMode = true; |
|
skin.mouseChildren = false; |
|
|
|
if(skin.stage){ |
|
addEventListener(); |
|
}else{ |
|
_skin.addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler,false,0,true); |
|
} |
|
} |
|
|
|
public function over(handler:Function):ButtonHelper{ |
|
_mouseOver.add(handler); |
|
return this; |
|
} |
|
|
|
public function out(handler:Function):ButtonHelper{ |
|
_mouseOut.add(handler); |
|
return this; |
|
} |
|
|
|
public function up(handler:Function):ButtonHelper{ |
|
_mouseUp.add(handler); |
|
return this; |
|
} |
|
|
|
public function down(handler:Function):ButtonHelper{ |
|
_mouseDown.add(handler); |
|
return this; |
|
} |
|
|
|
public function click(handler:Function):ButtonHelper{ |
|
_clicked.add(handler); |
|
return this; |
|
} |
|
|
|
public function get enabled():Boolean { |
|
return _enabled; |
|
} |
|
|
|
public function set enabled(value:Boolean):void { |
|
_enabled = value; |
|
_skin.mouseEnabled = _enabled; |
|
} |
|
|
|
private function addedToStageHandler(event:Event):void { |
|
_skin.removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler); |
|
addEventListener(); |
|
} |
|
|
|
private function addEventListener():void { |
|
_skin.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); |
|
_skin.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); |
|
_skin.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); |
|
_skin.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); |
|
_skin.addEventListener(MouseEvent.CLICK, mouseClickHandler); |
|
_skin.addEventListener(Event.REMOVED_FROM_STAGE, removedFromStageHandler); |
|
} |
|
|
|
private function removeEventListener():void { |
|
_skin.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); |
|
_skin.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); |
|
_skin.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); |
|
_skin.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); |
|
_skin.removeEventListener(MouseEvent.CLICK, mouseClickHandler); |
|
_skin.removeEventListener(Event.REMOVED_FROM_STAGE, removedFromStageHandler); |
|
_mouseUp.removeAll(); |
|
_mouseDown.removeAll(); |
|
_mouseOut.removeAll(); |
|
_mouseOver.removeAll(); |
|
_clicked.removeAll(); |
|
} |
|
|
|
private function removedFromStageHandler(event:Event):void { |
|
removeEventListener(); |
|
} |
|
|
|
private function mouseUpHandler(event:MouseEvent):void { |
|
_mouseUp.dispatch(); |
|
} |
|
|
|
private function mouseDownHandler(event:MouseEvent):void { |
|
_mouseDown.dispatch(); |
|
} |
|
|
|
private function mouseOutHandler(event:MouseEvent):void { |
|
_mouseOut.dispatch(); |
|
} |
|
|
|
private function mouseOverHandler(event:MouseEvent):void { |
|
_mouseOver.dispatch(); |
|
} |
|
|
|
private function mouseClickHandler(event:MouseEvent):void { |
|
_clicked.dispatch(); |
|
} |
|
|
|
} |
|
} |