Flex viewstack продолжает перерисовывать невидимого ребенка, как это исправить? - PullRequest
0 голосов
/ 07 декабря 2009

Ситуация: у меня ViewStack с двумя детьми (оба типа Panel). Приложение начинается с ребенка 1 как SelectedChild.

При нажатии на кнопку ребенок 2 становится выбранным ребенком. После этого я возвращаюсь к ребенку 1, являющемуся SelectedChild.

Когда я нажимаю Show Redraw Regions во Flash Player, я вижу, что дочерний элемент 2 перерисовывается все время (у меня есть несколько движущихся объектов в дочернем объекте 2). Как я могу предотвратить это? Или это можно сделать только путем фактического удаления невидимого (в данном случае дочернего элемента 2) дочернего элемента?

Почему я хочу этого достичь? Дочерний объект 2 будет содержать довольно много данных (flv, images и т. Д.), И когда он будет кэширован , как то, что происходит сейчас, это замедлит мое приложение.

Ответы [ 2 ]

1 голос
/ 18 ноября 2010

Основным источником неэффективности во Flash могут быть невидимые объекты в вашем списке отображения. Они не только продолжают вызывать обновления области перерисовки («красные прямоугольники»), они накладывают штрафы на ЦП при обработке Flash, когда игроку необходимо пройти по дереву списка отображения. Мышки значительно дороже, даже если у вас нет слушателей MouseEvent, когда список отображения больше. Любой список отображения, содержащий более пары тысяч объектов, может начать испытывать боль.

Короче говоря, иногда производительность диктует, что вы пишете свой собственный "менеджер видимости" для обмена объектами внутри и из родительской иерархии в качестве альтернативы переключению DisplayObject.visible.

0 голосов
/ 08 декабря 2009

Я понял это: кажется, единственный способ фактически удалить ребенка, или это движущийся / анимированный контент.

Вызов video.stop(), animation.stop(), как упомянул Амаргош, тоже должен помочь.

...