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

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

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

Регистрация: Aug 2009
Сообщений: 134
По умолчанию Выделение/уничтожение памяти.

Хочу уточнить две ситуации с выделением/уничтожением памяти.

1.
Код:
private function LaunchBall(e:MouseEvent):void 
{ 
    var ball:CBall = new CBall();
    this.addChild(ball);
}

через определенный класс при столкновении я получаю доступ к созданному ball
и добавляю его в массив (видимость у массива глобальная).

Код:
removeChild(object);
CGlobal.delObjects.push(object); //  здесь object это созданный ball



Далее в др. месте программы, я обращаюсь к массиву и удаляю в нем ball
CGlobal.delObjects.splice(0,1);

Вопрос: в функции LaunchBall получается, мы создаем локально указатель (первый) который при выходе из функции уничтожится.
При добавлении в массив ball, создается в массиве второй указатель.
Который, с помощью splice(0,1); уничтожается.
Таким образом, получается, что на объект ball ссылок нет и сборщик мусора уничтожит его (освободит память занимаемую объектом)?

2.Имеется класс-муви клип CScene1, которая содержит много графических муви клипов (перетасканных во флеше), каждый из которых расположен в своей позиции, одним словом сцена, собранная во флеше.

Код:
var sc1:CScene1 = new CScene1;// cоздаем сцену
addChild(sc1);
removeChild(sc1); //по завершению удаляем ее из памяти.
sc1 = null;
Удаляя главный класс сцены, автоматически удалятся из памяти все графические дочерние муви клипы расположенные в sc1 (конечно с учетом, что все освобождены от events)?


Последний раз редактировалось Denis_ex; 11.11.2009 в 20:44.
Старый 11.11.2009, 20:17
Felicast вне форума Посмотреть профиль Отправить личное сообщение для Felicast Найти все сообщения от Felicast
  № 2  
Ответить с цитированием
Felicast
 
Аватар для Felicast

Регистрация: Feb 2008
Адрес: Череповец
Сообщений: 623
Отправить сообщение для Felicast с помощью ICQ
1 а как же
Код AS3:
this.addChild(ball);
вы думаете там ссылки на объект нет?
2 если ссылок нет, то да

зы: прикольное название классов (чувствуется сиплюсплюсное наследие)
__________________
я могу стать всем, если только захочу

Старый 11.11.2009, 20:46
Denis_ex вне форума Посмотреть профиль Отправить личное сообщение для Denis_ex Найти все сообщения от Denis_ex
  № 3  
Ответить с цитированием
Denis_ex

Регистрация: Aug 2009
Сообщений: 134
Цитата:
Сообщение от Felicast Посмотреть сообщение
1 а как же
Код AS3:
this.addChild(ball);
вы думаете там ссылки на объект нет?
2 если ссылок нет, то да

- сорри, не привел removeChild(object); (поправился), но вобще в программе удаляю из списка отображения.

зы: прикольное название классов (чувствуется сиплюсплюсное наследие)
- да точно, на AS3 c С++ перешел, до сих пор не привыкну, что нельзя удалить самому оператором delete динамический объект.

Старый 12.11.2009, 14:14
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 4  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
http://help.adobe.com/ru_RU/AS3LCR/F...rs.html#delete
Цитата:
delete Оператор
Применение
delete reference

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 9

Удаляет свойство объекта, заданное параметром reference. Результатом является значение true, если свойство не существует после завершения операции, в противном случае - false. Оператор delete возвращает true, если вызывается для несуществующего свойства или динамического свойства, не определенного в классе.

Оператор delete может возвратить значение false, если параметр reference не может быть удален. Невозможно удалить фиксированные свойства или переменные, объявленные при помощи инструкции var. Фиксированным свойством является переменная или метод, заявленные в определении класса.

Оператор delete нельзя использовать для удаления свойства класса, если этот класс не является динамическим классом, добавляемым во время выполнения. Свойства защищенных классов невозможно удалить при помощи оператора delete. Вместо этого установите свойство на значение null.

Примечание. Объект удалить невозможно, но можно подготовить объект для сборки мусора, удалив все ссылки на него. Типичной ссылкой на объект является указывающая на него переменная. Такую ссылку можно удалить, установив переменную на значение null. Сборщик мусора удаляет любой объект, на который нет ни одной ссылки.

Операнд
reference:* — Имя удаляемого свойства.

Результат
Boolean — Значение true в случае успешного удаления, иначе значение false.
__________________
Отряд Котовскага

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

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

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


 


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


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