Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   loader нужно удалять? (http://www.flasher.ru/forum/showthread.php?t=83673)

miramax 11.08.2006 13:59

loader нужно удалять?
 
Поставил вчера девятую альфу. Изучаю новый язык ) Сответсвенно куча вопросов. Например нужно ли удалять loader после того как она загрузил картинку и мы её разместили в спрайте?
и вообще чем отличается
addChild(loader) от addChild(loader.content) я всё-таки решил использовать второе, и удалать после всего loader, вдруг он лишную память жрёт. Только даже удалить его по человечески не могу. не знаю как это правильно сделать.

Вообщем что в этом коде лишнее и как вы обычно делаете, ситуция стандартная:

Код:


var l:Loader = new Loader();
 l.load(new URLRequest("s.jpg"));
 l.contentLoaderInfo.addEventListener('complete', onComplete);

 onComplete = function(){
        trace(l.content);
        addChild(l.content);
        l = undefined;
        trace(l);
 }


Den0k 11.08.2006 16:52

Класс Loader является подклассом DisplayObjectContainer но может содержать только одного потомка, тот объект что загружается.

При добавлении Loader в дисплей лист, по наступлению загрузки добавиться и загружаемый дочерний объект, после чего с помощью свойства Loadera content : DisplayObject загруженный объект можно переместить в любой другой контейнер:
Код:

var pictLdr:Loader = new Loader();
var container:Sprite = new Sprite();
function imgLoaded(e:Event):void {
    container.addChild(pictLdr.content);
}

Насчёт undefined, тут есть изменения по сравнению с предыдущими версиями AS (там, например, null и undefined могли применятся везде независимо от типа переменной-контейнера)

В AS3 только нетипизированные (untyped) переменные могут хранить значение undefined, то есть переменные объявленные так:

Код:

var a;
или
Код:

var a:*;
при попытке присвоить undefined переменной для которой тип данных указан flash превратит undefined в значение по умолчанию для этого типа. Так что в данном случае мало смысла делать так :)

miramax 11.08.2006 18:47

Цитата:

Сообщение от Den0k
. Так что в данном случае мало смысла делать так :)

Получается что однажды созданный Loader невозможно удалить? :confused:
мелочь, а неприятно

KidsKilla 11.08.2006 19:16

Цитата:

Сообщение от miramax
Получается что однажды созданный Loader невозможно удалить? :confused:
мелочь, а неприятно

ну вот у мувика нельзя удалить метод .loadMovie().
мелочь, а неприятно

7thsky™ 11.08.2006 19:48

Цитата:

Сообщение от miramax
Получается что однажды созданный Loader невозможно удалить? :confused:
мелочь, а неприятно

Можно, саморучно нельзя конечно, но если все ссылки на loader убьешь (как вариант приравнять l не к undefined а к null) то его при следущем обходе приберет к себе GC. собвственно так обстаит дело со всеми объектами во флэше, ты же не заботишься об собственно ручном убивании объекта события который получает обработчик? если ты его не сохранишь где то, то о нем в свое время позаботиться GC

miramax 11.08.2006 20:49

Цитата:

Сообщение от KidsKilla
ну вот у мувика нельзя удалить метод .loadMovie().
мелочь, а неприятно

Не утрируй, просто когда не удаляются новые поля из динамического класса, мне это не нравится. 7thsky, действительно помогает! :)

KidsKilla 11.08.2006 21:01

я не утрирую. delete для ссылки никто не отменял.

Den0k 11.08.2006 22:24

В AS3 delete может применятся только к динамическим переменным, с членами классов не выйдет, тут как сказал 7thsky™ можно выкрутиться присваиванием null, если все ссылки на объект будут содержать null то он конечно будет помечен GC на удаление и убран из памяти.

KidsKilla 11.08.2006 23:01

я только вот не понимаю на кой делать Loader членом класса...
да и в 1м примере var loader:Loader ...
а так да.


Часовой пояс GMT +4, время: 13:53.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.