首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

动态加载自定义component,该怎么解决

2012-03-05 
动态加载自定义component我现在自己写了一个组件,命名为:ComSelUser.mxml, 现在我就想在我的一个弹出窗口

动态加载自定义component
我现在自己写了一个组件,命名为:ComSelUser.mxml, 现在我就想在我的一个弹出窗口里面动态显示,因为这个窗口可能显示的组件不确定,也有可能显示ComSelDep.mxml, 我能否根据组件名ComSelUser, ComSelDep把这个组件显示在VBox或Panle里面。
 

[解决办法]
var cu:ComSelUser=new ComSelUser();
panle.addChild(cu);或者
vbox.addChild(cu);
[解决办法]

探讨
在javascript当中,你看都可以根据id,name得到对象
var obj = document.getElementById("idname");
然后去使用这个obj

[解决办法]
做类型转换,以后就可以引用ComSelDep控件的属性了。
比如
var comObj:ComSelDep = this["ComSelDep"] as ComSelDep;

//去引用ComSelDep控件的属性,例如我的ComSelDep有如下字段<mx:TextInput id="txtInput" />我如何得到txtInput的text值
comObj.txtInput.text;

//加到VBox最后
vBox.addChild(comObj);
// 加到指定位置
vBox.addChildAt(comObj, index);
[解决办法]
呵呵,看来咱们的有效沟通还是差啊。
你是不是想要类似java反射的效果?
知道class类名,获得他的实例比如下面的java代码:
Class clazz = Class.forName("xx.xx.ComSelDep");
clazz.newInstance();
类似这个的flex版本的代码?
[解决办法]
flex的上述代码示例:
JScript code
                var cls:Class =getDefinitionByName("mx.controls::TextInput") as Class;                   var txtinput:TextInput =new cls() as TextInput;                   // 把上面的代码,改成自己的类的全路径//                var cls:Class =getDefinitionByName("com.xx.ComSelDep") as Class;   //                var txtinput:ComSelDep =new cls() as ComSelDep;                                                       txtinput.text='test';                                     co1.addChild(txtinput);
[解决办法]
getDefinitionByName可以根据组件全路径生成CLASS,有了class后可以new这个class就是对象了,但这个方法之支持少数内部组件,很多组件或自定义组件,你必须要先“导入”那个类,不是import,简单的办法就是定义一个木偶变量;
例如你要生成一个ClassA,你需要先在组件里定义一个这样的变量:
private var classA:ClassA;这个classA可以不被任何东西赋值或调用都可以;
有了class后,new classA()就可以得到实例了;
[解决办法]
或者做个工厂吧,去构造实例。
[解决办法]
探讨

或者做个工厂吧,去构造实例。

[解决办法]
探讨
引用:

或者做个工厂吧,去构造实例。

如果你一定要用字符串取定位一个组件,那你写个工厂类,提供个静态方法是根据字符串new组件的,怎么对应你自己设定,但我觉得你既然可以传字符串,为什么不能传组件的全路径名?
var cls:Class =getDefinitionByName(传过来的字符串---全路径名) as Class;
var c……

热点排行