EventDispatcher類詳解
2010年06月14日 星期一 18:26
Evevt和EventDispatcher類在as3的事件機制中是很重要的角色,dispatchEvent()是EventDispatcher類的一個事件發送方法,它可以發送出Event類或其子類的實例,在as3中所有的顯示對象都可以發送事件,因爲as3中所有的顯示對象都是EventDispatcher子類DisplayObject的實例。
發送事件有三種方式:繼承EventDispatcher,如sprite等顯示對象、複合EventDispatcher或其子類、實現IEventDispatcher接口。
個人認爲複合EventDispatcher在實際應用中用的比較多,沒有找到合適例子,自己寫了一個很簡單的,僅供參考,爲了演示把簡單的問題複雜話了,首先畫一個矩形,點擊矩形後發送一個事件,矩形接收事件後alpha變爲0;
自定義事件:
package{
import flash.events.Event;
public class MyEvent extends Event{
public static const ALPHA:String = "alpha";
public function MyEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false){
super(type, bubbles, cancelable);
}
}
}
package{
import flash.display.Sprite;
public class Sample extends Sprite{
public function Sample(){
this.graphics.beginFill(0xff6600);
this.graphics.drawRect(50,50,100,50);
this.graphics.endFill();
this.addEventListener(MyEvent.ALPHAALPHA,blackHandler);
}
private function blackHandler(evt:MyEvent){
this.alpha = 0;
}
}
}
主類:
package{
import flash.display.Sprite;
import flash.events.MouseEvent;
public class Main extends Sprite{
private var sample:Sample;
public function Main(){
sample = new Sample();
//註冊事件偵聽器
sample.addEventListener(MouseEvent.CLICK,clickHandler);
addChild(sample);
}
private function clickHandler(evt:MouseEvent){
//發送事件
sample.dispatchEvent(new MyEvent(MyEvent.ALPHA));
}
}
}
注:在as3中只有事件的發送者才能偵聽事件。在Main類中sample實例發送的事件也只有sample註冊的偵聽器才能偵聽,在Sample中的this正是指向了sample。
事實上,沒有什麼要比發現、培養、呵護、調整自己的心智的力量更重要的事情了.........
轉載地址:[url]http://hi.baidu.com/chancelia/blog/item/1a40a423b64808a94623e80c.html[/url]
事件發送之複合EventDispatcher對象
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Adobe AIR介紹(轉載)
iteye_96
2020-02-26 05:09:37
深入分析Flex [Bindable] 以及使用方法(轉載)
iteye_96
2020-02-26 05:09:37
初識Flex Data Services(FDS)(轉載)
iteye_96
2020-02-26 05:09:37
Adobe AIR技術優勢(裝載)
iteye_96
2020-02-26 05:09:37
label/textBase showTruncationTip/isTruncated屬性
iteye_96
2018-08-31 08:55:08
Event類的實例方法
iteye_96
2018-08-31 08:54:49
使用ItemRenderer處理基於List容器的顯示內容 [DataGrid, Tree, List等]
iteye_96
2018-08-31 08:54:36
Flex 4 and the Text Layout Framework
iteye_96
2018-08-31 08:54:36
請求服務器數據,解決IIE緩存問題
iteye_96
2018-08-31 08:54:31
關於flex 的命名空間及訪問控制符問題
iteye_96
2018-08-31 08:54:31
如何加載一個swf文件中類的方法
iteye_96
2018-08-31 08:54:31
flex3 ,flex4 skin
iteye_96
2018-08-31 08:54:30