santiago1983

学无止境

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

在比较构造可选参数之前,我们先看看自定义事件和方法构造各自的过程。

自定义事件两步走,

第一步:

先继承Event类,并生成一个附加data;这个类我们可以定义为DataEvent。

//继承了Event类;
public class DataEvent extends Event{
//构造一个属性,用于传递信息
private var eventData:*;
private var eventData1:*;
public function DataEvent(type:String, bubbles:Boolean=false,cancelable:Boolean=false, data:*=false,data1:* = true)
{
//沿用之前规则
super(type, bubbles, cancelable);
//eventData则实例生成完毕
eventData = data;
eventData1 = data1;
}

//另外再续给DataEvent类三个方法:
//
使其data属性为子类所公用
public function get data():*{
return eventData;
}
public function get data1():*{
return eventData1;
}
//重写克隆方法
override public function clone():Event{
return new DataEvent(type,bubbles,cancelable, eventData,eventData1);
}
//重写toString方法
override public function toString():String{
return formatToString("DataEvent", "type", "bubbles", "cancelable", "data");
}

为什么要重写这两个方法?因为原来的Event类中的这两个方法是没有针对data的,而这里我们添加了data属性,所以我们就相应地重写覆盖这两个方法。

第二步:

public class CustomEvent extends DataEvent
{
//想构造多少就构造多少,自己命名就可以了。
public static constSUBMIT_ENTRY:String = "submitEntryOnly";
public function CustomEvent(type:String,data:*=true, data1:* = true)
{
super(type, true, true, data, data1);
}
//依然重写一次;
override public function clone():Event
{
return new CustomEvent(type,data,data1);
}
}

对于方法构造,相对来说就可以一行代码写清楚:

Function myFunciton(var1:类型,var2:类型)://返不返回随你便 {//随便写点什么}; 

写到这里,回到我们的主题:构造自定义event类的可选参数和构造方法中的可选参数问题。

在构造自定义event类时,我们注意:

public function DataEvent(type:String,bubbles:Boolean=false, cancelable:Boolean=false, data:*=false, data1:* = true)

我给定了data = false, data1 = true;这样做的结果是,他们有默认值。那换个说法,其实就是如果我不重新赋值,那么他们就会有默认值。

在构造方法时,

FunctionmyFunciton(var1:类型,var2:类型)://返不返回随你便 {//随便写点什么}; 我没有给出他们的default值,当然我也可以给他们值,如下:

Function myFunciton(var1:类型= …,var2:类型=…)://返不返回随你便 {//随便写点什么};

其实如果你有自己跟着我的总结一起做的话,你应该会发现,actionscript的可选参数,实际上就是它已经有了默认值,你可以不一定再赋值,如果你再赋值,就会覆盖它的default值。如果没有默认值,那么你就必须给它值,否则actionscript就会报错提醒你少了参数。

另外还有一个小细节,这个也是actionscript的不足,即可选多个参数的省略问题。

在actionscript里面,加入有参数如下(var1,var2,var3,var4),

假设var1,var2是必要参数,那么我们就不谈了,

var3,var4是可选参数,那么我们可以省略这两者,也可以省略var4,但不能单独省略var3.

到目前为止,我在处理这个问题的时候,我会自定义时,根据参数的重要性的先后 来定义参数的位置。重要的放前,不重要的放后面。这样,我们就不会出现刚才所提到的尴尬了。但实际上这个并不算问题,我们就算把参数都写上也不会花多少时间。懒人才怕做细活。哈哈。



posted on 2012-02-11 22:42  santiago1983  阅读(766)  评论(0编辑  收藏  举报