As3.0中的反射

给你一个代码代表"类"完整路径的字符串,比如"flash.text.TextField",你能用AS3.0在舞台上动态创建一个该类的实例么?(用var txt:TextField = new TextField()作弊的不算)

var txtClass:Class = getDefinitionByName("flash.text.TextField") as Class;
var txtInstance:TextField = new txtClass() as TextField;
txtInstance.text = "通过反射动态创建的TextField";
txtInstance.width = stage.stageWidth;
addChild(txtInstance);

ok,这就是AS3.0中的反射,虽然写法与c#中的完全不同,但是概念是相通的,有了这个我们可以把一些需要动态创建实例的信息,放在xml配置文件里,运行时先加载xml配置,然后根据配置文件来决定是创建一个"男猪角"或一个"女猪角"加入游戏场景中

 

当然反射也能用于开发者自定义的类:

package  {

	import flash.display.Sprite;

	public class MyClass extends Sprite{

		public function MyClass() {

			trace("MyClass is created.")
		}

		public function HelloWorld(msg:String){
			trace("MyClass.HelloWorld is called. msg =" + msg);
		}

	}

}

 

var aClass:Class = getDefinitionByName("MyClass") as Class;
var myClassInstance:MyClass = new aClass() as MyClass;
myClassInstance.HelloWorld("菩提树下的杨过");
时间: 2024-11-08 23:22:30

As3.0中的反射的相关文章

Flash AS3.0中uint数据类型做循环判断应注意

数据|数据类型|循环 在AS3.0中增加了新的数据类型uint,其表示正整数.我们可以先看一下下面的例子: for(var i:uint = 5;i>=0;i--)  {  trace("test");  }  运行该代码将会产生一个运行错误:"Error: Error #1502: 脚本的执行时间已经超过了 15 秒的默认超时设置.".如果我们将i声明成int或者Number将可以顺利完成任务.这个主要是因为我们声明的i为uint,它的有效的范围为0~429

Flash AS3.0中is,as运算符

运算 (1) is运算符 在AS3.0新增加的is运算符,主要功能是判断一个变量或者等式是不是等于给定的数据类型,在以前的版本中,有instanceof来实现相同的功能. 但是is 运算符可以帮助我们确定数据类型,还可以判断类的继承关系,包括对于接口的继承执行. 可以看如下实例: var mySprite:Sprite = new Sprite();  trace(mySprite is Sprite); //output:true  trace(mySprite is DisplayObjec

AS3.0中Tween类的基础 教程

AS3.0中Tween类的基础 教程 写个关于ActionScript3.0 中的Tween类的小教程吧,还是抛砖引玉,偷摸追赶一下潮流.(个人认为AS3.0是以后支持互动设计的主流技术) 说道Tween类,看字面的意思就是实现补间动画的.在Flash CS3中,Adobe已经为大家开发好了一套可以轻松实现运动效果的类.这套类包位于fl.transition.*中.其实,这些包 中的类效果的原理都是监听ENTER_FRAME事件的.在动画播放时,按帧频改变目标的属性,从而产生动画的效果. 负责动

as3.0中如何阻止事件冒泡?

as3.0中的事件冒泡机制有时候会很烦人,比如一个Sprite(方便下文描述就命名为Container吧)把另一外Sprite(称为Child吧)做为子元素套进来以后,如果两个Sprite都注册了Mouse_Down事件,要想在Child上点击鼠标时系统只响应Child的Mouse_Down事件,默认是不行的,因为事件冒泡会让Container也响应Mouse_Down事件,示例代码: package { import flash.display.*; import flash.events.M

as3.0中通过ApplicationDomain类获得被加载应用程序域

首先先回顾一下FLASH的OO构成.对于FLASH,我们可以把任何的可视化元件都看成某个类文件的具体实例,包括swf文件.我们可以把swf文件看成一个类的具体实例,而它里面拥有个个其他类的实例对象,例如:我们新建一个loaded.fla文件,然后我们建立一个影片剪辑元件,你可以在它的内部做一些动画处理,打开库 ,单击元件右建,选择"链接"打开"链接属性",在类的输入框里我们键入"myClass".这样一来我们就可以把这个元件作为一个类--myCl

as3.0中的Tween类|flash缓冲效果讲解

最近做的东西,对于效果编程比较多,特别是缓冲,加速度等效果,特意研究了一下Tween类,写篇教程分享 给大家,算是过年送给大家的新年礼物! 下面是官方写的fl.transitions.Tween类:可以先尝试看一下这段代码的写法,用这个方法去看:从构造函数看起,假设我使用了该类new Tween(mc,"x",Regular.easeOut,0,200,4);结合adobe的帮助文档,当初始化实例的时候,便对对象mc的x进行Regular.easeOut操作,具体是从0值到200 值,

AS3.0中的位图扭曲变形

DisplacementMapFilter 类使用指定的 BitmapData 对象(称为置换图图像)的像素值执行对象置换. 您可以使用此滤镜将扭曲或斑点效果应用于从 DisplayObject 类中继承的任何对象,例如 MovieClip.SimpleButton.TextField 和 Video 对象,以及 BitmapData 对象. 程序代码: import flash.display.Bitmap; import flash.display.BitmapData; var picWi

flash as3.0中鼠标事件MOUSE_MOVE, MOUSE_DOWN

flash MOUSE_OVER, MOUSE_MOVE, MOUSE_DOWN, MOUSE_UP, MOUSE_OUT, MOUSE_WHEEL和MOUSE_LEAVE flash.events.MouseEvent类,最后一个MOUSE_LEAVE却是来自flash.events.Event,在导入类包的时候一定要注意这个问题,因为我在这点上就花了很长时间调试,才得发现问题所在. MOUSE_OVER - 鼠标移动到目标对象之上时触发, 可以用于模拟按钮的mouse over效果; MOU

Flash AS3.0菜鸟学飞教程代码的位置

早期版本的ActionScript代码可以写在帧.按钮.影片剪辑.as文件等位置,而Flash AS3.0代码的位置发生了重大的改变,只能写在帧及as文件中. 虽然Flash AS3.0支持把代码写在时间轴中,但在实际应用中,如果把很多的代码放在时间轴中,会导致代码很难管理.或者说,用类来组织大量的代码更为合适,因为类代码都是放在as文件中的. 除了把代码放在时间轴上,还可以把代码放在外部文件中,比如,放在服务器的txt文件中,然后把这些外部数据加载到fla文件里. 外部文件代码 以往都是在时间