我正在尝试在运行时复制一个flex组件。
例如,如果我有这个
mx:Button label="btn“id="btn”click="handleClick(event)"/>
我应该能够调用一个名为DuplicateComponent()的函数,它应该返回一个与上面按钮完全相同的UI组件,包括事件侦听器。
谁能帮帮我??提前感谢
发布于 2009-07-06 18:49:55
执行字节数组复制。下面的代码段应该会为您完成此操作:
// ActionScript file
import flash.utils.ByteArray;
private function clone(source:Object):*
{
var myBA:ByteArray = new ByteArray();
myBA.writeObject(source);
myBA.position = 0;
return(myBA.readObject());
}注意,这段代码不是我自己写的,我很确定我是从Flex Coder列表上的一篇文章中得到的。
发布于 2009-07-06 11:39:30
要解决这个问题,您应该使用actionscript并动态创建按钮。
假设您希望按钮放在一个名为'someVbox‘的VBox中
for (var i:uint = 0; i< 10; i++){
var but:Button = new Button();
but.label = 'some_id_'+i;
but.id = 'some_id_'+i;
but.addEventListener(MouseEvent.CLICK, 'handleClick');
someVbox.addChild(but);
}我还没有测试过,但如果运气好的话,应该可以给vbox增加10个按钮。
发布于 2009-07-06 11:34:33
您不能在本地获取UIComponents的深层副本。你最好的办法是创建一个新的,并分析你必须添加一个重复的设置。老实说,这听起来确实有点代码的味道。我想知道有没有一个更好的解决方案,只要稍微重新思考一下。
https://stackoverflow.com/questions/1086436
复制相似问题