专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Flex

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

发布时间:2011-06-27 20:42:30 文章来源:www.iduyao.cn 采编人员:星星草
动态加载自定义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……
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: