flex中getDefinitionByName 函数的使用
在项目中自定义一个CheckboxGroup,这个控件里面包含多个Checkbox想控制Checkbox的行为:所以使用查找一下帮助使用flex中经典方法:getDefinitionByName 函数的使用
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所获得的类名就是前面你所做的声名的名字引用
-------------------------------------------------
import com.ooph.parser.*;
//包内有ParserWeb类
var ss:ParserWeb;
//在此处声名ParserWeb类,名为ss(名字不用与下面实例名的相同)
var sortStr:String="Web";
var P:Class = getDefinitionByName("com.ooph.parser.Parser"+sortStr) as Class;
//注意这里要写完整的类路径 "com.ooph.parser.Parser"+sortStr
var newParser:* = new P();
getDefinitionByName(name) 返回 name 参数指定的类的类对象引用。
经过测试只能获取内置的类,不能获取自定类,怎么解决呀??
其实最终问题是,知道类名,但是为字符串,如何获取它?因为数量不定放在XML中配置的。
因为内置类库肯定会被编译到swf里,这样反射就能拿到。而自定义的类,如果整个工程里都没有用到,即使import也不会被编译(不然swf里的垃圾成分太多)。我建议可以把需要反射的类库生成一个swf去载入,或者在工程的什么地方引用一下。
getDefinitionByName
()
函数
public function
相关文档:
module 接口文件 PictureWindowInterface.as
package
{
public interface PictureWindowInterface
{
function setSelectIndex(index:int):void
}
}
moudule 文件 PictureWindow.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml ......
Flex Chart 虽然有提供完整的试用功能
不过编译完成的图表会加上水印
“Flex Data Visualization Trial”的字样。
既然是 AS,那事情就简单了
只要在 Flex Project 內加上以下 Class:
一定要创建mx.charts.chartClasses,覆盖FLEX自带的ChartLicenseHandler
package mx.charts.chartClasses { ......
Testing Flex applications with FlexMonkey 1.0
Without automation, testing the UI components of your Flex
application can be tedious and time consuming. Adobe includes an
automation framework in Flex to enable developers to create automated
tests that operate at the GUI level. FlexMonkey
1.0 i ......
因为无论是FLEX,还是Silverlight、AJAX,他们都无法直接操作数据库(据最新消息,微软有了Microsoft .NET RIA Services,它可以直接操作数据库,我期待着她能在VS2010中出现),通常用WEBSERVICE等中间人的方式来进行SOAP协议的的文本传输,效率很低(大家试一下就会知道简直无法忍受),FLEX为了加快传输速度,于是制定了 ......