Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 在Flex中重新加载组件但维护相同的实例_Apache Flex_Actionscript 3_Instance - Fatal编程技术网

Apache flex 在Flex中重新加载组件但维护相同的实例

Apache flex 在Flex中重新加载组件但维护相同的实例,apache-flex,actionscript-3,instance,Apache Flex,Actionscript 3,Instance,假设我有一个名为myCanvas的canvas组件,我用 var myCanvasPage:myCanvas = new myCanvas; this.addChild(myCanvasPage); 然后我想稍后重新加载我的画布页面。实际上,我想这样做: this.removeChild(myCanvasPage); var myCanvasPage:myCanvas = new myCanvas; this.addChild(myCanvasPage); 除了不创建myCanvas的新实例

假设我有一个名为myCanvas的canvas组件,我用

var myCanvasPage:myCanvas = new myCanvas;
this.addChild(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);
因此,为了重述,您可以从stage中添加和删除对象

this.addChild(this.myCanvasPage);
this.removeChild(this.myCanvasPage);
一整天,该对象中的数据永远不会消失


哇,我不知道从哪里开始。。。我认为阿斯曼解决了你大部分的误解。我认为您需要研究的缺失部分是,只要对象不超出范围,对对象的引用如何保持(即计数)。请记住,只要变量不在范围之外,它对某个对象的引用(如果有,即如果它不为null)就会被计算在内


@The_asMan@sixfeetsix好的,我认为这是一个误解。我知道从stage中删除一个对象并不会将其从内存中删除,而实例化一个新的myCanvas对象会创建一个全新的、独立的对象。我的例子并不好,因为我的基本问题与舞台无关。我基本上想知道我是否可以获取一个已经实例化的对象,并从本质上重新实例化它(迫使它再次经历创建生命周期)。不知道这是否有意义。如果你的意思是重复使用var,那么“new”操作符将重新创建实例。当你这样做时,只需保留作用域。“new”操作符似乎创建了一个全新的实例。例如,flex提供的原始实例名可能是myCanvas325,但使用“new”操作符重用var将创建另一个实例,例如myCanvas455@Steven好的,“我想”我理解重新实例化一个对象基本上会给你一个全新的对象,有点像买一辆新车。这是由于新的操作员。在您的情况下,无论出于何种原因,您都不想重新实例化要重新初始化的对象。这将通过类中内置的公共init函数来完成。在这个函数中,您将拥有将所有类属性重置回默认级别的代码。我不知道这是否有道理。我想这是没有道理的。您可以重新填充所需的数据,并将组件置于所需状态。我主要想知道是否有可能做到这一点。是的,有可能创建数据驱动的组件。