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

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

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

Регистрация: Sep 2008
Адрес: Terra
Сообщений: 64
Отправить сообщение для elmortem с помощью Skype™
Question Event-callback-сироты

Я как-то не задумывался про зачистку памяти от событий и их callback-функций. Есть у меня примерно такой код:
Код:
mov.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {
  e.currentTarget.parent.removeChild(e.currentTarget);
});
Память загадится или при удалении mov удаляются и все его события и функции-сироты?

P.S. Естественно, если функция имеет свой дом (: я событие удаляю по нормальному перед удалением объекта.
__________________
Тихо, идёт запись!

Старый 14.12.2008, 18:28
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Это уже один из поводов никогда не использовать конструкцию из кода выше.
__________________
Hell is the possibility of sanity

Старый 14.12.2008, 18:31
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 3  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Нужно подписывать на нормальные функции.

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

Регистрация: Sep 2002
Сообщений: 30,784
Нужно подписывать не функции, а методы экземпляров класса.

Старый 14.12.2008, 19:22
elmortem вне форума Посмотреть профиль Отправить личное сообщение для elmortem Посетить домашнюю страницу elmortem Найти все сообщения от elmortem
  № 5  
Ответить с цитированием
elmortem
 
Аватар для elmortem

Регистрация: Sep 2008
Адрес: Terra
Сообщений: 64
Отправить сообщение для elmortem с помощью Skype™
Ну, я примерно так и думал, просто сложно отказать себе в JavaScript-стайл-программировании.
А на поставленный вопрос кто-нибудь ответит? (: Что случится, если всё-таки писать так, как в примере?
__________________
Тихо, идёт запись!

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

Регистрация: Sep 2002
Сообщений: 30,784
Случится запор в памяти.

Старый 15.12.2008, 16:26
elmortem вне форума Посмотреть профиль Отправить личное сообщение для elmortem Посетить домашнюю страницу elmortem Найти все сообщения от elmortem
  № 7  
Ответить с цитированием
elmortem
 
Аватар для elmortem

Регистрация: Sep 2008
Адрес: Terra
Сообщений: 64
Отправить сообщение для elmortem с помощью Skype™
А если конструкция будет примерно следующая?..
Код:
mov.myNewMethod = function(e:MouseEvent):void {
  this.removeEventListener(MouseEvent.CLICK, this.myNewMethod);
  this.parent.removeChild(this);
}
mov.addEventListener(MouseEvent.CLICK, mov.myNewMethod);
Память не будет страдать нехорошими болезнями? (:
__________________
Тихо, идёт запись!

Старый 15.12.2008, 18:32
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 8  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Если сможете отписаться, то не будет.
Но зачем использовать такие кривые конструкции?

Старый 15.12.2008, 19:13
elmortem вне форума Посмотреть профиль Отправить личное сообщение для elmortem Посетить домашнюю страницу elmortem Найти все сообщения от elmortem
  № 9  
Ответить с цитированием
elmortem
 
Аватар для elmortem

Регистрация: Sep 2008
Адрес: Terra
Сообщений: 64
Отправить сообщение для elmortem с помощью Skype™
Ясно. А что в этих конструкциях кривого?
Не создавать же мне 50 своих классов только для того, чтобы сделать им 50 методов, отнаследовать 50 мувиков от этих классов, чтобы можно было нормально подписаться/отписаться на события.
По моему кривая конструкция - у Гарбаж Коллектора.
__________________
Тихо, идёт запись!

Старый 15.12.2008, 19:29
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 10  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
1. есть динамические классы.
2. что предпочтительно - вы ведь в любом случае создаете объект класса, так какая вам разница, будете вы создавать объекты типа Sprite или CustomSprite? Я не верю, что нужно 50 разных методов... скорее всего можно обойтись 2-3 разновидностями... ну десятком на крайняк, но их все равно нужно будет написать в таком случае, так что работы ну уж точно не прибавится.
__________________
Hell is the possibility of sanity

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

Теги
callback , event , movieclip

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

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


 


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


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