Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.01.2012, 12:56
Varlamov_AS вне форума Посмотреть профиль Отправить личное сообщение для Varlamov_AS Найти все сообщения от Varlamov_AS
  № 1  
Ответить с цитированием
Varlamov_AS

Регистрация: Dec 2011
Сообщений: 31
Question Корректное удаление Sprite

Доброго времени суток.
Ситуация такая. Есть собственный CustomSprite (расширенный Sprite). На нем анимация из набора Bitmap'oв.
При удалении спрайта следующим образом:
Код AS3:
           while (tempUIComp.numChildren > 0) {
                while (Sprite(tempUIComp.getChildAt(0)).numChildren > 0) {
                    Bitmap(Sprite(tempUIComp.getChildAt(0)).getChildAt(0)).bitmapData.dispose();
                    Sprite(tempUIComp.getChildAt(0)).removeChildAt(0);
                }
                tempUIComp.removeChildAt(0);
            }
В области прорисовки плеера остаются контуры прорисовки анимации (т.е. как я понимаю память не освобождается). И анимация продолжается, т.е. контуры движутся.

Посоветуйте как правильно его удалять и освобождать память.

Старый 10.01.2012, 13:16
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Что, этот «код» ещё и работает?

Старый 10.01.2012, 13:29
Varlamov_AS вне форума Посмотреть профиль Отправить личное сообщение для Varlamov_AS Найти все сообщения от Varlamov_AS
  № 3  
Ответить с цитированием
Varlamov_AS

Регистрация: Dec 2011
Сообщений: 31
А можно подробнее? Что неправильно?

Старый 10.01.2012, 13:35
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Этот код ужасен своим безумством. Надо ещё строчек tempUIComp.getChildAt(0)).getChildAt(0) добавить, чтобы вообще нельзя было понять, что происходит.

Старый 10.01.2012, 14:12
Varlamov_AS вне форума Посмотреть профиль Отправить личное сообщение для Varlamov_AS Найти все сообщения от Varlamov_AS
  № 5  
Ответить с цитированием
Varlamov_AS

Регистрация: Dec 2011
Сообщений: 31
То есть, по-вашему, так все проще и понятнее?
Код AS3:
            var tempNumChildren:uint = _tempUIComp.numChildren;
            var tempSpriteNumChildren:uint;
            var tempObject:Object;
            var tempBitmapObject:Object;
 
            while (tempNumChildren > 0) {
                tempObject = _tempUIComp.getChildAt(0);
                tempSpriteNumChildren = Sprite(tempObject).numChildren;
 
                while (tempSpriteNumChildren > 0) {
                    tempBitmapObject = Sprite(tempObject).getChildAt(0);
                    Bitmap(tempBitmapObject).bitmapData.dispose();
                    Sprite(tempObject).removeChildAt(0);
                    tempSpriteNumChildren--;
                }
 
                _tempUIComp.removeChildAt(0);
                tempNumChildren--;
            }
И по существу(про корректное удаление Sprite) так ничего и не ответили...

Старый 10.01.2012, 14:22
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
А по существу при таком безумном коде ответить невозможно.
И да, понятней не стало. Почему вы так уверены, что там на нулевой глубине обязательно будет битмап и больше ничего?

Старый 10.01.2012, 14:34
Varlamov_AS вне форума Посмотреть профиль Отправить личное сообщение для Varlamov_AS Найти все сообщения от Varlamov_AS
  № 7  
Ответить с цитированием
Varlamov_AS

Регистрация: Dec 2011
Сообщений: 31
Потому что я использую свой CustomSprite, в котором только Bitmap'ы, которые я добавляю программно (их n-ое количество).
Кроме изображений, я ничего туда не добавляю.

Старый 10.01.2012, 14:50
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 8  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Если используете свой CustomSprite, то и "спрячьте" в него удаление
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:29.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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