dispatchEvent 不是函数

public class Main extends MovieClip
{
		public function Main() 
		{
			mc.addEventListener(MouseEvent.CLICK, f1);
			function f1(e:MouseEvent):void
			{
				trace(this);
				this.dispatchEvent(new Event(Event.RESIZE));
			}
		}
}
[object global]
TypeError: Error #1006: dispatchEvent 不是函数。
 at MethodInfo-1()

 

网上找到的资料
在AS3中使用全局对象(global) 收藏
(本文适用于ActionScript 3)
(如若转载, 请留下作者frogcjn的Blog链接:http://blog.csdn.net/frogcjn/)
© 2007,2008 frogcjn


在AS3之前, 通常使用下列语句来动态访问自定义类.

global.className;

global["className"];//动态访问的方法

而在AS3中, Object及其子类中, 根本没有global这个属性。所以要动态访问自定义类可就难了。
例如在名为Test.fla的FLASH文件中, 设置它的"Document class"为Test.as , 然后编辑Test.as, 再按"ctrl+enter"运行.

Test.as 内容:

package{ import flash.display.*; public class Test extends MovieClip{ public functionTest(){ var a = Math.floor(Math.random()*3);//随机设定a的值为0,1或2 trace(a);//输出数字a trace(global["Class"+a]);//在这里本打算动态访问ClassN, //正确的话应该输出"[classclassN]". //可是由于没有global这个属性, //却输出"ReferenceError: Error #1065: 变量 global 未定义". } } public class Class0{ } public class Class1{ } public class Class2{ }} 我的解决方法是在"package{}"之后加入"var global = this;", 这样就可以动态访问在"package{}"内部自定义的类了。例如在名为Test.fla的FLASH文件中, 设置它的"Document class"为Test2.as
Test2.as 内容:

package{ import flash.display.*; public class Test2 extends MovieClip{ public functionTest2(){ var a = Math.floor(Math.random()*3);//随机设定a的值为0,1或2 trace(a);//输出数字a trace(global["Class"+a]);//由于声明了global指向本package,所以正确输出"[classclassN]" } } public class Class0{ } public class Class1{ } public class Class2{ }}var global = this; 那么在主时间轴上是否也可以访问在Test2.as中声明的global呢?
在Test.fla文件的第一帧写:

trace(global);

按"ctrl+enter"运行时输出"[object global]", 所以 global 也可以在主时间轴上使用。
那么Top level(顶级)类 (如 Math、String、Number类都是顶级类)是否也可以通过声明的global动态访问呢?

你可以用下列语句试一试:

trace(global.Math);//输出"undefined"

答案是否定的, 看来,global只能访问"package{}"内部的对象。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值