[Flex] Flex 控件&类 的自定义事件添加

NewClass源码摘要:本文记录了Flex中给控件和类加入自定义事件的步骤。

正文:虽然网上已经有很多类似的资料了, 不过还是想自己写一篇,作为存档。

 

(一)给类A加入自定义事件FavPathDelEvt,Appliaction调用A,并响应A的事件

(1)写一个自定义事件as类,类中附带参数Index。

package NewClass
{
    
import flash.events.Event;
    
    
public class FavPathDelEvt extends flash.events.Event
    {
        
private var _index:int;
        
        
public function set Index(index:int):void
        {
            _index 
= index;
        }
        
        
public function get Index():int
        {
            
return _index;
        }
        
public function FavPathDelEvt(type:String, index:int)
        {
            Index 
= index;
            
super(type);
        }
    }

} 

 

(2)在需要触发这个事件的类(也就是A类)中加上[Event...]的申明,并且写上触发函数。

 

package NewClass
{
    
import NewClass.FavPathDelEvt;
    
import mx.core.Container;
    
import flash.utils.setTimeout;
    
    [Event(name
="onDelPath", type="NewClass.FavPathDelEvt")]
    
    
public class A extends Container
    {    
        
public function A()
        {
            flash.utils.setTimeout(function():
void{               //这里设置了一个延时函数,类初始化2000ms后触发事件
                DispatchEventofA();
            },
2000,null);
        }
        
        
private function DispatchEventofA():void
        {
            
this.dispatchEvent(new NewClass.FavPathDelEvt("onDelPath",1));
        }
    }
}

 

 

(3) 最后,在Application所在的mxml中,加上事件处理函数,并将该函数和A的事件绑定。

 <?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="500" minHeight="350" creationComplete="Init()">

    
<mx:Script>
        
<![CDATA[
            import NewClass.A;
            
            import mx.controls.Alert;
            
            private function Init():void
            {
                var a:A = new A();
                a.addEventListener("onDelPath",FavPathDelEvt_Handler);//将A的事件和Application中的函数绑定
            }
            private function FavPathDelEvt_Handler(evt:FavPathDelEvt):void
            {
                Alert.show("FavPathDelEvt of A is called, Index is " + evt.Index);
            }
            
        
]]>
    
</mx:Script>
</mx:Application>

 

运行程序后,2秒后会出现调用事件的提示对话框。

 

 (二)给自定义组件mxml加入自定义事件

给组件加入自定义事件基本和(一)一致。区别在于,mxml中可以通过加入

<mx:Metadata> 
        [Event(name="onDelPath", type="NewClass.FavPathDelEvt")]
</mx:Metadata>   

来完成和A中 [Event((name="onDelPath", type="NewClass.FavPathDelEvt")] 相同的功能

--------------------------------

 源码下载链接:NewClass.rar

--------------------------------- 

转载请注明出处,au revoir! 

 

posted on 2011-03-02 18:19  Felix Fang  阅读(469)  评论(0编辑  收藏  举报

导航