Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Не удаляется BitmapData (http://www.flasher.ru/forum/showthread.php?t=132986)

alehandro.fedos 24.11.2009 20:50

Не удаляется BitmapData
 
Bitmap кладу в MovieClip непрограммно. Но при удалении мувика (и битмапа внутри соответственно) его BitmapData остаётся в оперативе. Вопрос: как его удалить?

Мои размышления:

Трейсом выяснил, что в мувике лежит Shape (видимо он создаётся флешем и на него натягивается битмап). Задать имя битмапу непрограммно нельзя. Соответственно как добраться до bitmap.bitmapData.dispose() я не могу ни напрямую, ни movie.getChildAt(0), ни через Shape.

Мягкими ссылками, Memory Controller не помогает.
Хелп. :wacko:

r_r_f_r 24.11.2009 20:55

Цитата:

Bitmap кладу в MovieClip непрограммно
Задайте битмапе в библиотеке baseClass = BitmapData(export for action script).

alehandro.fedos 24.11.2009 22:12

В Bitmap Properties моего битмапа отмечена галочка Export for ActionScript. В Base class прописано flash.display.BitmapData. Но как это может мне помочь? Имя экземляра битмапа задать нельзя, соответственно обратиться тоже =( Или я недопонял совет?

wvxvw 24.11.2009 22:49

Если бы было так, как вы описываете, то это был бы не Shape а Bitmap. Получить битмапдату у него и удалить уже проблем не составит.

Obi 24.11.2009 22:52

Цитата:

Сообщение от alehandro.fedos (Сообщение 868069)
В Bitmap Properties моего битмапа отмечена галочка Export for ActionScript. В Base class прописано flash.display.BitmapData. Но как это может мне помочь? Имя экземляра битмапа задать нельзя, соответственно обратиться тоже =( Или я недопонял совет?

http://www.picamatic.com/show/2009/1...28_766x637.jpg

gloomyBrain 24.11.2009 22:53

[quote]Bitmap кладу в MovieClip непрограммно. Но при удалении мувика (и битмапа внутри соответственно) его BitmapData остаётся в оперативе. Вопрос: как его удалить?/QUOTE]

Ответ: непрограммно.

Объясняю: флеш плеер ваши данные (все без исключения) при выполнении пихает в опреативу. Если в библиотеке у вас лежит (или заэмбенден (-жен?)) некий ресурс... то как вы себе представляете его удаление? Удалить из библиотеки? =) А вдруг Вы захотите создать еще один такой символ - что тогда вам должна ответить среда выполнения?

alehandro.fedos 24.11.2009 23:06

Урааа! :) Починил. Вышеописаный битмап прописал как в посте выше. С мувика его удалил и создал программно:

Код AS3:

//Объявление переменных
public var bitmapData:BitmapData;
public var bitmap:Bitmap;
 
//В конструкторе
bitmapData = new BitmapDataExp(3000, 3000); //BitmapDataExp - класс битмапа в Library
bitmap = new Bitmap(bitmapData);
bitmap .x = -1500;
bitmap .y = -1500;
addChildAt(bitmap, 1);
 
//Удаление и чистка памяти
removeChild(bitmap);
bitmapData.dispose();

Добавлено через 23 минуты
Цитата:

Если бы было так, как вы описываете, то это был бы не Shape а Bitmap. Получить битмапдату у него и удалить уже проблем не составит.
Я пытался обратиться к битмапдате:

Код AS3:

((movieClip.getChildAt(0)) as BitmapData).dispose();

Вылетает обращение к переменной null, а трейс:

Код AS3:

trace(movieClip.getChildAt(0));

выдаёт Shape :(
______________________________________________

2Obi и r_r_f_r: Так и сделал. Навели меня на правильную мыслю - спасибо.
______________________________________________

Цитата:

Объясняю: флеш плеер ваши данные (все без исключения) при выполнении пихает в опреативу. Если в библиотеке у вас лежит (или заэмбенден (-жен?)) некий ресурс... то как вы себе представляете его удаление? Удалить из библиотеки? =) А вдруг Вы захотите создать еще один такой символ - что тогда вам должна ответить среда выполнения?
Понятное дело что флешка со всей library висит в оперативе. Я и не собирался её удалять. Другое дело, что при создании bitmap в оперативе создаётся BitmapData (программно - явно, непрограмно - неявно). Я так понял это попиксельный массив. При размере картинки в 1 Мб эта штука может висеть в оперативе метров на 30, да ещё и не смотря на удаление bitmap оставаться там жить навечно.
______________________________________________
Вывод: Создавать bitmap и соответствующий ей bitmapData программно и удалять вручную.

gloomyBrain 24.11.2009 23:36

Цитата:

1 Мб эта штука может висеть в оперативе метров на 30
4 байта на пиксель
Цитата:

не смотря на удаление bitmap оставаться там жить навечно
Нет, до следующей чистки GarbageCollector'ом, т.к. на нее не будет внешних ссылок. Но неизвестно, когда эта чистка произойдет... =)

alehandro.fedos 25.11.2009 11:42

В моём случае как я ни старался - этого не происходило до закрытия флешки =(


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

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