有没有可靠的方法来“刷新”组件?

时间:2011-12-23 20:18:05

标签: flex air

通过“刷新”我完全处理它然后再次在应用程序中引入它(不关闭应用程序本身 - 即)。除了我认为问题是不言自明的。

示例: 假设我有一个名为myComponent的组件。我以标准方式MXMl使用<components:myComponent id="myID" />将该组件添加到应用程序中。假设当用户单击按钮(按钮可能处于其他状态)时,标识为myID的组件应垃圾收集,并将新的实例添加到应用程序中。

我该怎么做呢?如果有多个解决方案哪个是最佳性能?

我是Flash和Flex的新手,请原谅我使用了不正确的术语。

1 个答案:

答案 0 :(得分:0)

从旧组件中删除所有事件侦听器;无论他们使用removeEventListener方法:

myButton.removeEventListener(someEvent, someEventHandlerMethod);

然后,所有引用该组件的变量都应设置为null。如果在MXML文件中创建,如下所示:

<s:Button id="myButton" />

然后你要做的就是将该值设置为null:

myButton = null;

一旦没有对组件的引用,它就可以安全地符合垃圾回收的条件。

如果您想重新创建,那么只需重新创建它。您必须在ActionScript中重新创建它,但代码并不难。概念上是这样的:

myButton = new myButton();
myButton.properties = propertyValues;
myButton.addEventListener(someEvent, someEventHandlerMethod);
parentContainer.addChildAt(myButton, whateverPositionYouWantToADdTheComponentAt);

我不确定我是否看到了这样做的好处。我怀疑以你需要的方式调整现有按钮实例会更有效率,而不是破坏它并试图用完全相同的东西替换它。