• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>FLASH AS 编程>AS基础篇>AS 3.0>文章内容
  • AS3学习笔记
  • 来源:蓝色理想 作者:eidiot 2007-06-07 【


做东西的时候发现AS3的EventDispatcher类好像不能传参数。请教 bogey ,答曰,写一个类继承 Event ,把参数放在构造里。试了一下,果然好用。

实例演示(查看类代码)

页面生成部分就不介绍了,唯一值得注意的是 TextField 类增加了一个 appendText 方法。以前的

myTxt.text += "your text";

应该写成:

myTxt.appendText("your text");

如果使用老的方法编译器会提示:这招太慢了,试试新的吧。(Appending text to a TextField using += is many times slower than using the TextField.appendText() method.)
EventDispatcher 类的 dispatchEvent 方法只接受一个参数:event:Event。为了在广播事件的同时传递参数,写一个继承Event的类:TestEvent

internal class TestEvent extends Event{
//code here
}

将事件类型声明为一个字符串常量:

public static const TRACE_INOF:String = "traceInfo";

将要传递的参数和事件类型一起放在构造函数里

private var _who:String;
private var _info:String;
public function TestEvent(type:String,who:String,info:String){
super(type);//调用父类 Event 的构造函数
_who = who;
_info = info;
}

广播事件的代码:

public function dispatch(who:String,info:String):void{
dispatchEvent(new TestEvent(TestEvent.TRACE_INOF,who,info));
}

注册监_听_器:

dispatcher.addEventListener(TestEvent.TRACE_INOF,onTraceInfo);

接收事件和参数:

public function onTraceInfo(event:TestEvent):void{
var traceTxt:TextField =
getChildByName( "traceTxt") as TextField;
traceTxt.appendText(event.who+ "dispatch:"+event.info);
}

这里需要注意的是 as ,新的类型转换操作符,将 getChildByName() 返回的 DisplayObject 转换为前面声明的类型 TextField 。如果转换失败将返回 null 。官方给的例子:

 

public var myArray:Array = ["one", "two", "three"];
trace(myArray as Array); // one,two,three
trace(myArray as Number); // null
trace(myArray as int); // null

源文件: event.rar


上一页 1 2 34 5 6 下一页

上一篇:AS3应用程序模块化开发与ApplicationDomain   下一篇:AS3声明舞台元素为类变量
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)


FLASH源文件

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)