AS3:getDefinitionByName
2010-07-06 10:48
369 查看
public function
public function getDefinitionByName(name:String):Object
返回参数 name 中指定的类引用
参数 name:String - 类名称
返回 Object - 返回参数 name 中指定的类引用
错误 ReferenceError - 找不到参数 name 对应的公共定义
as3中的getDefinitionByName函数是 返回 name 参数指定的类的类对象引用。
这样就可以使用这个方法根据已知类的路径的字符串来获取类的类对象引用。这样就可以利用这个特性让flash动态创建类的实例.
但问题是:
1. 使用getDefinitionByName方法获得的类必须是在发布的时候被编译到swf文中的,否则就会报错:"ReferenceError: Error #1065: 变量 <类的名字> 未定义。"
2. 由于使用import导入的类(只是作为查找类的路径)并不会在发布swf的时候被编译进去(当然flash.*包里面的类本身就是player中的),只用在代码中使用到的类才会被编译进去...
那么,要使用这个方法来实现动态执行怎么办? 只有把可能需要的所有类包含在代码中(比如在定义变量的类型声名时使用 *),并且在开始声名此类,声名时可以随便使用个名字,这样才能使用getDefinitionByName方法...
实际上getDefinitionByName所获得的类名就是前面你所做的声名的名字引用//-----------------------------
******************************************************************************
如下是例子中的写法
第一处:
var facade:*;
facade=getDefinitionByName("com.xygame.module.facade.ApplicationFacade");
facade.getInstance().sendNotification("selectserver",evt.params.sid);
第二处:
注:SmileView继承于SPrite类,它加载了一个smileview.swf,swf之中有很多个小表情MovieClip,我们要取得其中的一个
private var smile:MovieClip;
var cls:Class=getDefinitionByName("com.publiccomponent.smile.SmileView") as Class; //这里cls是类类型
var container:DisplayObjectContainer=new cls() as DisplayObjectContainer;
//这里cls因为new了一个对象才有实例化,为Object类型
smile=container.getChildAt(1) as MovieClip;
public function getDefinitionByName(name:String):Object
返回参数 name 中指定的类引用
参数 name:String - 类名称
返回 Object - 返回参数 name 中指定的类引用
错误 ReferenceError - 找不到参数 name 对应的公共定义
as3中的getDefinitionByName函数是 返回 name 参数指定的类的类对象引用。
这样就可以使用这个方法根据已知类的路径的字符串来获取类的类对象引用。这样就可以利用这个特性让flash动态创建类的实例.
但问题是:
1. 使用getDefinitionByName方法获得的类必须是在发布的时候被编译到swf文中的,否则就会报错:"ReferenceError: Error #1065: 变量 <类的名字> 未定义。"
2. 由于使用import导入的类(只是作为查找类的路径)并不会在发布swf的时候被编译进去(当然flash.*包里面的类本身就是player中的),只用在代码中使用到的类才会被编译进去...
那么,要使用这个方法来实现动态执行怎么办? 只有把可能需要的所有类包含在代码中(比如在定义变量的类型声名时使用 *),并且在开始声名此类,声名时可以随便使用个名字,这样才能使用getDefinitionByName方法...
实际上getDefinitionByName所获得的类名就是前面你所做的声名的名字引用//-----------------------------
******************************************************************************
如下是例子中的写法
第一处:
var facade:*;
facade=getDefinitionByName("com.xygame.module.facade.ApplicationFacade");
facade.getInstance().sendNotification("selectserver",evt.params.sid);
第二处:
注:SmileView继承于SPrite类,它加载了一个smileview.swf,swf之中有很多个小表情MovieClip,我们要取得其中的一个
private var smile:MovieClip;
var cls:Class=getDefinitionByName("com.publiccomponent.smile.SmileView") as Class; //这里cls是类类型
var container:DisplayObjectContainer=new cls() as DisplayObjectContainer;
//这里cls因为new了一个对象才有实例化,为Object类型
smile=container.getChildAt(1) as MovieClip;
相关文章推荐
- AS3获取对象类名,getDefinitionByName,getQualifiedClassName,getQualifiedSuperclassName
- AS3动态获取对象类名及类的方法,getDefinitionByName,getQualifiedClassName,getQualifiedSuperclassName
- AS3获取对象类名,getDefinitionByName,getQualifiedClassName,getQualifiedSuperclassName
- 学习AS3 getDefinitionByName (献给所有eval发烧友们)
- AS3 getDefinitionByName
- getDefinitionByName()
- getDefinitionByName 反射自定义类报错解决办法
- Flash as3 基础:AS3中的getChildByName(转)
- (转)getDefinitionByName,getQualifiedClassName,getQualifiedSuperclassName用法
- getDefinitionByName getDefinition 区别
- getDefinitionByName动态创建类。
- Flex 中用类名反射出类实例(getDefinitionByName)
- Error #1065: 变量 未定义 global/flash.utils::getDefinitionByName()
- getDefinitionByName巧妙应用
- (转)getDefinitionByName,getQualifiedClassName,getQualifiedSuperclassName用法
- getDefinitionByName/getQualifiedClassName/getQualifiedSuperclassName
- getDefinitionByName () 函数
- 关于getDefinitionByName的问题
- AS3中的getChildByName
- getDefinitionByName巧妙应用