Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
AS 3.0

Удаление слушателя

18.11.2014, 21:23. Показов 2104. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть у меня некий класс, структура такая:
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package Data.CLASSES.PLATFORMS
{
    //...........импорты
    
    public class PLATFORM_KILL extends Sprite
    {
        public function PLATFORM_KILL(container:Sprite, x:Number, y:Number, w:Number, h:Number, obj:Object)
        {
 
            //.....создаю тело Бокс2д
            ....
 
//
            addEventListener("stop", f_stop);
 
        }
        
        //---------------------------------------------------------
        private function f_stop(e:Event):void {
            //.....делаю что-то
 
            removeEventListener("stop", f_stop);
        }
    
    }
}
Так вот, вопрос: как коректно подчистить слушатель, если класс обнулился а не через диспатчер(рестарт уровня). Думал на ремув фром стейдж вешать очистку, но я не помещаю сам класс на сцену.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.11.2014, 21:23
Ответы с готовыми решениями:

Как грамотно поставить слушателя на функцию?
Как нужно поставить слушателя на функцию, чтобы она выполнилась ТОЛЬКО ТОГДА, когда произошло изменение значение какой-либо переменной, а...

Ошибка слушателя
Всем привет. Недавно начал учить Java и столкнулся с одной проблемой при написании калькулятора: в классе CalculatorEngine выдает ошибку в...

SWT: Удалить слушателя
Предположим, у меня есть класс, объекты которого умеют генерить и добавлять специфического слушателя (отдельный класс, имплементящий...

24
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
19.11.2014, 00:28
Студворк — интернет-сервис помощи студентам
Правы, как если бы кинули горсть монет и только одна упала бы правильной стороной.
По этому, так не считается.
1
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
19.11.2014, 11:28  [ТС]
Вот читаю про области видимости и хочу спросить вас, правильно ли я понимаю на конкретном моем примере. Вот что пишут :
Если ключевое слово var используется в коде функции, то переменная становится локальной для этой функции и вдобавок к этому временной: когда функция прекращает свою работу, эта переменная перестает существовать. В этом основное и главное назначение var.
Значит как только создался конструктором мой экземпляр new PLATFORM_KILL, то переменные
ActionScript 3
1
2
3
            var _body:b2Body; 
            var _bodyDef:b2BodyDef;
            var _shape:b2PolygonShape;
исчезают. И единственная ссылка остается _mc, и то если передан параметр в конструкторе? А если _mc все-же остается null, то в итоге у меня в памяти будет висеть просто экземпляр-пустышка с 1 слушателем, внутри которого нету никаких ссылок уже на сторонние объекты?

Добавлено через 32 минуты
Вобщем пришел к выводу по моему примеру. Если я хочу чтоб мой экземпляр класса безоговорочно удалился с памяти коллектором мусора в любом случае нада:
- создать внутри класса паблик деструктор:
ActionScript 3
1
2
3
4
public function destroy():void {
_mc=null;
removeEventListener("stop",f_stop);
}
В теле другого класса, где я создаю экземпляр писать не просто
ActionScript 3
1
new PLATFORM_KILL(....)
а
ActionScript 3
1
_class=new PLATFORM_KILL(....)
И в нужный момент вызвать
ActionScript 3
1
_class.destroy();
Дальше ГК уберет с памяти экземпляр PLATFORM_KILL.

ТАК? Жду критики
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
19.11.2014, 12:37
Да, локальные переменные перестают существовать когда метод закончил свое выполнение.
Даже не так - ссылка на объект перестает существовать, что не означает, что объект тоже.
Объект может быть помещен в массив или ссылка на него присвоена другому свойству или
объект помещен в десплей лист ( addChild ).
ActionScript 3
1
_class=new PLATFORM_KILL(....)
Вы говорите, что экземпляров PLATFORM_KILL у Вас много, а значит стоит отметить,
что если их все присваивать одному свойству класса, то останется только последний,
так как ссылки будут затираться.
0
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
19.11.2014, 12:56  [ТС]
Цитата Сообщение от bus Посмотреть сообщение
Вы говорите, что экземпляров PLATFORM_KILL у Вас много, а значит стоит отметить,
что если их все присваивать одному свойству класса, то останется только последний,
так как ссылки будут затираться.
Это уже 2 часть марлезонского балета. Это понятно что последняя ссылка остается. Теперь вот думаю как правильно деструкторы вызвать для сотни таких экземпляров. Имеет право на жизнь такой вариант? :
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
var _class:Array=[];
for (var i:Number=0; i<100;i++) {
_class.push(new PLATFORM_KILL(....));
}
 
...
 
//В момент удаления всего уровня или рестарта:
for (var i:Number=0; i<_class.length;i++) {
_class[i].destroy();
}
 
_class=null;
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
19.11.2014, 13:21
Цитата Сообщение от Wells77 Посмотреть сообщение
Имеет право на жизнь такой вариант?
Да.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.11.2014, 13:21

Получение данных из слушателя
Добрый день, помогите, совсем запутался в приведенном коде содержится модель с помощью JDialog необходимо загрузить данные из файла и...

Реализация общего слушателя
В программе есть 3 класса: интерфейс пользователя (jPanel), класс рабочего объекта и главное окно (jFrame с экземплярами интерфейса и...

Автоматическое добавление слушателя
Всем привет... Недавно возникла проблема.... Когда программа запускается то автоматически размещает на форме jCheckBox. Мне надо...

Исключения в методе слушателя
Я пишу пытаюсь написать калькулятор для подсчета длины спиц на велосипедном колесе, при нажатии на баттон при условии заполненных полей...

Заморочка слушателя мыши
import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru