反射 是指只在程序运行时获取信息的方式。
比如实现动态创建类实例,方法,通过发射可以用字符串来取代类名。好处在于动态的据定了主程序要调用的类;
使用new运算符创建对象或实例时,直接调用了某个具体类的构造函数,而在编程时,经常需要动态地创建类的实例,这时可以使用反射来创建实例。
//动态得到类的构造函数
var classcontructor:Class = MovieClip;
//创建相关类的实例
var mc:MovieClip = new classcontructor();
mc.graphics.beginFill(0xff9900,100);
mc.graphics.drawRect(0,0,100,100);
addChild(mc);
先把MovieClip类保存在一个数据类型为Class的变量 “classcontructor”中,再通过“classcontructor”来创建实例。当“classcontructor”的值改为其他类型时,创建的实例也就属于其他类型。
//保存链接名
var linkname:String = "BigPhoto";
//得到类信息
var cla:Class = getDefinitionByName(linkname);
//创建类的实例
var bitmapdata:BitmapData = new cla(50,50);
var img:Bitmap = new Bitmap(bitmapdata);
addChild(img);