//客制化事件物件
package customEvent
{
import flash.events.Event;
public class CustomEvent extends Event
{
//事件名稱
static public const ATTRIBUTE_CHANGED:String = "attributeChanged";
//建構式
public function CustomEvent(
type:String,
newAttribute:Object=null, oldAttribute:Object=null,
bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
this.newAttribute = newAttribute;
this.oldAttribute = oldAttribute;
}
//新的屬性值
private var _newAttribute:Object;
public function get newAttribute():Object
{
return _newAttribute;
}
public function set newAttribute(value:Object):void
{
_newAttribute = value;
}
//舊的屬性值
private var _oldAttribute:Object;
public function get oldAttribute():Object
{
return _oldAttribute;
}
public function set oldAttribute(value:Object):void
{
_oldAttribute = value;
}
override public function clone():Event
{
return new CustomEvent(type , newAttribute, oldAttribute , bubbles , cancelable);
}
}
}
//測試程式
package
{
import customEvent.CustomEvent;
import flash.display.Sprite;
import flash.events.MouseEvent;
public class ActionScript_Test extends Sprite
{
private var btn:Sprite;
private var color:uint = 0xff3366;
public function ActionScript_Test()
{
//畫一個圓角矩形用來發事件
btn = new Sprite();
btn.x = 0;
btn.y = 20;
drawButton();
//加入滑鼠事件偵聽
btn.addEventListener(MouseEvent.CLICK , onClickHandler);
//加到stage中
this.addChild(btn);
//加入偵聽式
this.addEventListener(CustomEvent.ATTRIBUTE_CHANGED , feeback);
}
private function drawButton():void
{
btn.graphics.clear();
btn.graphics.beginFill(color,0.8);
btn.graphics.drawRoundRect(0,0,100,30,5,5);
btn.graphics.endFill();
}
//滑鼠點擊事件
public function onClickHandler(e:MouseEvent):void
{
var event:CustomEvent = new CustomEvent(CustomEvent.ATTRIBUTE_CHANGED,0x6666cc,color);
//發送事件
this.dispatchEvent(event);
}
//客制化事件處理
public function feeback(e:CustomEvent):void
{
color = (e.newAttribute as uint);
drawButton();
}
}
}
沒有留言:
張貼留言