Перезагрузка компонента с сохранением того же экземпляра во Flex - PullRequest
0 голосов
/ 14 июня 2011

Допустим, у меня есть компонент canvas, называемый myCanvas, и я создал его с помощью

var myCanvasPage:myCanvas = new myCanvas;
this.addChild(myCanvasPage);

Затем я хочу существенно перезагрузить myCanvasPage позже.По сути, я хочу сделать это:

this.removeChild(myCanvasPage);
var myCanvasPage:myCanvas = new myCanvas;
this.addChild(myCanvasPage);

за исключением того, что вместо создания нового экземпляра myCanvas, я хочу использовать уже созданный экземпляр myCanvas и, по существу, перезагрузить или заново создать его, но убедившись, чтоИмя экземпляра и ссылки на него остаются прежними.Каков наилучший способ сделать это?

Ответы [ 3 ]

1 голос
/ 14 июня 2011

Всякий раз, когда вы делаете

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);

весь день, и данные в этом объекте никогда не исчезнут.

Хорошее чтение по сбору мусора

0 голосов
/ 14 июня 2011

Woa Я не уверен, с чего начать ... Я думаю, THE_asMan устраняет большинство ваших недоразумений.Недостающий бит, который, я думаю, вам нужно рассмотреть, - это то, как ссылка на объект хранится (т.е. считается), пока он не выходит за рамки видимости.Просто помните, что до тех пор, пока переменная не находится вне области видимости, ее ссылка на некоторый объект (если он есть, т. Е. Если он не равен нулю) подсчитывается.

0 голосов
/ 14 июня 2011

Что вы подразумеваете под "перезагрузкой"?Возможно, проще создать компоненты, управляемые данными, и изменить эти данные, чтобы изменить или сбросить состояние компонента>

...