Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
2 / 2 / 1
Регистрация: 21.10.2011
Сообщений: 116
1

Удаление объекта и всех его слушателей

03.04.2015, 15:20. Показов 1313. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!

Не могу удалить объект.

Есть основной класс который создает объект типа Obje, необходимо при нажатии на стоп чтобы объект удалился

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
package  
{
    import flash.display.*;
    import flash.events.*;
    
    public class Test extends Sprite
    {
        var test:Obje;
        
        public function Test() 
        {
            test = new Obje();
            
            _stop.addEventListener(MouseEvent.CLICK, _Fstop);
        }
        
        public function _Fstop(e:Event)
        {
            test = null;
            trace ("Удалить объект");
        }
    }
    
}
Класс Obje тресирует привет

ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package  
{
    import flash.display.*;
    import flash.events.*;
    
    public class Obje extends Sprite
    {
 
        public function Obje() 
        {
            addEventListener(Event.ENTER_FRAME,movetest);
        }
        
        public function movetest(e:Event)
        {
            trace("привет");
        }
    }
}
После того как я пишу test = null; всеровно продолжает писать привет
Как правильно удалить такой объект
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2015, 15:20
Ответы с готовыми решениями:

Удаление объекта и его родителя
У меня динамически создается TGroupBox, на нем картинка (Timage). Как сделать чтобы при клике по...

Отключение/включение объекта или его создание/удаление
Все доброго времени суток. Вопрос вот в чём: имеется магазин апгрейда орудий. Собственно, при...

ListBox. Удаление объекта со сдвигом индексов всех элементов массива и самих строчек
Доброго времени суток. Спасибо всем, кто откликается на мои "не умные вопросы" =) Ибо понять меня...

Как вывести на экран информацию обо всех курсах, расположенных на заданной улице с кол-ством слушателей больше 20
Вот мой код Нужно вывести на экран информацию обо всех курсах, расположенных на заданной улице с...

7
Модератор
2904 / 1763 / 179
Регистрация: 19.02.2011
Сообщений: 6,477
03.04.2015, 17:23 2
DIMA_N, почему перед удалением объекта не вызвать какой-нибудь публичный метод, например, destroy, в котором прописать удаление всех созданных слушателей?

Добавлено через 20 секунд
...тем более, что объект в примере на сцену не помещается.
0
2 / 2 / 1
Регистрация: 21.10.2011
Сообщений: 116
03.04.2015, 19:56  [ТС] 3
TanaTiX, это я для примера написал на вообще у меня идет отображение, а как работать с destroy я не пойму.

Можете подсказать?
0
Модератор
2904 / 1763 / 179
Регистрация: 19.02.2011
Сообщений: 6,477
03.04.2015, 20:52 4
Если есть отображение и объект по задумке только один раз добавляется на сцену, то достаточно его подписать на REMOVED_FROM_STAGE.
Цитата Сообщение от DIMA_N Посмотреть сообщение
а как работать с destroy я не пойму
Это обычный публичный метод, который вы сами создаете и запускаете его перед удалением. Соответственно в методе отписка от всех слушателей.
0
2 / 2 / 1
Регистрация: 21.10.2011
Сообщений: 116
04.04.2015, 00:18  [ТС] 5
Вот так дописал, срабатывает функция, но потом все равно продолжает писать "привет"

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  
{
    import flash.display.*;
    import flash.events.*;
    
    public class Test extends Sprite
    {
        var test:Obje;
        
        public function Test() 
        {
            test = new Obje();
            
            _stop.addEventListener(MouseEvent.CLICK, _Fstop);
        }
        
        public function _Fstop(e:Event)
        {
            test.destroy();
            test = null;
            trace ("Удалить объект");
            trace(test);
        }
    }
    
}
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
package  
{
    import flash.display.*;
    import flash.events.*;
    
    public class Obje extends Sprite
    {
 
        public function Obje() 
        {
            addEventListener(Event.ENTER_FRAME,movetest);
        }
        
        public function movetest(e:Event)
        {
            trace("привет");
        }
        
        public function destroy()
        {
            removeEventListener(Event.REMOVED_FROM_STAGE,movetest);
            trace("Удалили");
        }
    }
}
0
Модератор
2904 / 1763 / 179
Регистрация: 19.02.2011
Сообщений: 6,477
05.04.2015, 14:58 6
DIMA_N, код, похоже, правильный, видимо, ошибка в другом месте.
0
254 / 238 / 50
Регистрация: 20.12.2011
Сообщений: 707
05.04.2015, 15:27 7
Ошибка в том, что подписываетесь на ENTER_FRAME, а удаляете REMOVED_FROM_STAGE на который даже не подписаны
1
Модератор
2904 / 1763 / 179
Регистрация: 19.02.2011
Сообщений: 6,477
05.04.2015, 16:04 8
Theoryofgames, что-то я туда совсем не посмотрел. Спасибо за исправление, думал, что там одно и тоже событие.
0
05.04.2015, 16:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2015, 16:04
Помогаю со студенческими работами здесь

Удаление дерева (помещение всех его элементов в список свободного пространства)
Удаление дерева, т.е. помещение всех его элементов в список свободного пространства....нужна помошь

Пермещение объекта в позицию другого объекта по его клику
Имеется command1 и command2 Как сделать чтобы при нажатии на command2, command1 перемещалась в...

Удаление объектов из списка и удаление самого объекта
Здраствуйте! Возник такой вопрос, допустим имеется структура данных (неважно, будь то словарь или...

Получить доступ к элементу объекта document по его ID и изменить свойства элемента и его содержимое
Здравствуйте господа, нужен скрипт который будет выводить все свойства объекта, допустим <div>...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru