最近在学习《一周学习flex4视频中文版》,“第四天”的第二课“扩展事件类并传递数据,看了视频后自己动手练了练,发现有几点需要注意,写下来下次遇到的时候就不用乱找了:
1。继承事件的类中如果有数据对象(作参数)的话,它的类型必须是Object,不能是具体类。
代码:
package customEvents
{
import flash.events.Event;
public class PreviewEvent extends Event
{
public var employee:Object;//公共类成员必须是object
public var message:String;
public function PreviewEvent(type:String,employee:Object,message:String) //参数中的对象employee也必须
{ //是object类型
this.employee=employee;
this.message=message;
super(type);
}
}
}
2.在抛出事件时需要注意,事件的type是metaData中申明的事件类型,而不是我们之前定义的类型,比如说在metaData中如下申明:
[Event(name="pEvent",type="customEvents.PreviewEvent")]
那么在初始化事件的时候的写法:
var currEvent:PreviewEvent=new PreviewEvent("pEvent",ddlEmployee.selectedItem,txtMsg.text);
而不能用PreviewEvent。
3。就是在2代码中,创建currEvent是,用到的第二个参数是个dropDownList的选中项,该项作为一个对象传递进来。而不必使用
具体的employ对象。就是说flex自动把xml中的employee对象绑定到dropDownlist中,当要取出其中的对象使用时,直接用
ddlEmployee.selectedItem便可。在另一个接收参数的自定义组件中,我们需要定义的也是Object类型的Employee变量,但是在
处理数据时,我们可以这样取employee的姓名:employee.name 或者employee.age(年龄)。