如何解决重新加载组件,但在Flex中保持相同的实例
| 假设我有一个名为myCanvas的画布组件,并使用实例化了它。var myCanvasPage:myCanvas = new myCanvas;
this.addChild(myCanvasPage);
然后,我想稍后基本上重新加载myCanvasPage。实际上,我想这样做:
this.removeChild(myCanvasPage);
var myCanvasPage:myCanvas = new myCanvas;
this.addChild(myCanvasPage);
除了不创建myCanvas的新实例,我要使用已经创建的myCanvas实例并实质上重新加载或重新创建它,但是要确保实例名称和对其的引用保持不变。最好的方法是什么?
解决方法
每当你做
var myCanvasPage:myCanvas = new myCanvas;
您正在实例化myCanvasPage对象。
从舞台上删除对象不会从内存中删除对象。
只要在代码中的某处存在引用,myCanvasPage对象就不会被垃圾收集,并且所有值和属性都将与您从舞台上删除该对象时的引用和属性相同。
要进行引用,您必须将其范围限定在您的课程上。
public var myCanvasPage:myCanvas = new myCanvas;
所以现在您可以参考
this.myCanvasPage
当您准备将其添加回舞台时。
this.addChild(this.myCanvasPage);
因此,回顾一下,您可以从舞台中添加和删除对象
this.addChild(this.myCanvasPage);
this.removeChild(this.myCanvasPage);
一整天,该对象中的数据将永远不会消失。
关于垃圾收集的一些不错的阅读
, 您是什么意思“重新加载”?创建数据驱动的组件并更改该数据以更改或重置组件状态也许更简单
, 哇,我不确定从哪里开始...我认为THE_asMan解决了您的大多数误会。我认为您需要研究的遗漏之处是,只要不超出范围,对对象的引用将如何保存(即计数)。请记住,只要a变量不在范围内,就将其对某个对象的引用(如果存在,即不为null)计算在内。
http://help.adobe.com/zh_CN/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f9d.html#WS5b3ccc516d4fbf351e63e3d118a9b90204-7f8c
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。