Форум программистов, компьютерный форум, киберфорум
Наши страницы
ActionScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Serega931
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 46
1

Удаление экземпляра подкласса

01.10.2013, 18:49. Просмотров 844. Ответов 8
Метки нет (Все метки)

Здравствуйте прошу помощи в освоении данного материала.
По рекомендации, с недавних пор начал изучать и писать код в класс. Я понял, код в классах - это на самом деле удобней и понятней, и в кадрах больше не пишу. Сейчас весь мой код, находится только в одном, основном классе и самое, что интересное основной класс стал очень громоздким и я уже сам начал в нем путаться. Поэтому начал осваивать подклассы, т.е. как то разбивать свой код для удобства. Вот тут и возникли трудности с созданием и удалением экземпляров подклассов .

Пример 1 - это сам сделал (исходник в низу)

Вопрос 1: КАК при нажатии на кнопку, полностью удалить линию со сцены и из памяти в Примере 1 ??????
Почему то не вызываются публичные переменные из подкласса. в чем ошибки ??????


Пример 2 - В поисках уроков в интернете наткнулся еще на один интересный пример(исходник в низу):
http://www.softtime.ru/actionscripts/gallery.php

И во втором примере есть строки:
ActionScript 3
1
item[id] = new photo(id, mX, mY, mWidth, mHeight);
таким образом создается экземпляр подкласса.

Вопрос 2: КАК удалить graphics во втором примере, через кнопку, например нажал на кнопку и все graphics удалились со сцены и из памяти ??????

Вопрос 3: КАК отследить слушатели событий во втором примере и как их удалять ??????
Я так понимаю удалять циклом, но что прописывать в цикле, к какому имени крепятся слушатели и как удалить слушатель не у одного graphics, а у всех ??????

Насколько я понимаю для полного удаления необходимо "обрубить все ссылки" и удалить все слушатели. У меня не получается удалять созданные объекты.

Ранее мною была создана подобная тема, удаление Loader: Циклом for создаем Loader - его удаление?
Пробовал применить данные знания про типизированный массив, но не чего не получилась.


Прошу, помогите освоить данный материал. Заранее спасибо с уважение Сергей .
0
Вложения
Тип файла: 7z Пример1.7z (6.8 Кб, 6 просмотров)
Тип файла: 7z Пример2.7z (7.4 Кб, 5 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2013, 18:49
Ответы с готовыми решениями:

Удаление экземпляра класса
Хочу уточнить у вас, если я удаляю экземпляр класса через ремувчайлд, то все дети его с их...

Удаление экземпляра класса
Экземпляры класса хранятся в коллекции Collection = Как экземпляру уничтожить себя, и как это...

Удаление экземпляра класса
нужно при помощи кнопки удалить выбранный в treeview экземпляр класса. объявление массивов...

Удаление экземпляра класса
Здравствуйте. Пытаюсь написать игру. В игре по заданным координатам создаётся экземпляр класса....

Почему при вызове метода у экземпляра класса он сначала ищет у экземпляра
Всем привет, после прочтения Лутца про ООП появился такой вопрос почему при вызове метода у...

8
TanaTiX
Модератор
2798 / 1655 / 168
Регистрация: 19.02.2011
Сообщений: 6,018
Завершенные тесты: 2
01.10.2013, 19:32 2
Цитата Сообщение от Serega931 Посмотреть сообщение
полностью удалить линию со сцены и из памяти
Помимо присваивания null еще и
ActionScript 3
1
removeChild(myobject);
Цитата Сообщение от Serega931 Посмотреть сообщение
КАК удалить graphics во втором примере
У визуальных объектов всегда есть свойство graphics, его отдельно удалить нельзя, можно удалить сам объект. Для очистки содержимого из объекта graphics используется метод clear.
Цитата Сообщение от Serega931 Посмотреть сообщение
КАК отследить слушатели событий во втором примере и как их удалять ?
Я бы слушатель делал на контейнере, а не на каждом объекте, т.к. объекты однотипны и их достаточно большое кол-во. Соответственно addEventListener, соответственно removeEventListener.
Цитата Сообщение от Serega931 Посмотреть сообщение
Я так понимаю удалять циклом
Есть метод removeChildren, но он появился на последних версиях ФП. А так да, можно циклом. Также необходимо будет еще очистить массив.
Цитата Сообщение от Serega931 Посмотреть сообщение
Пробовал применить данные знания про типизированный массив, но не чего не получилась.

Не по теме:

Ну это выходит(?) за рамки данной темы. И если спрашивать, то подробней.

0
Serega931
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 46
02.10.2013, 17:16  [ТС] 3
По поводу removeChild вот сделал пример_3. Насколько я понимаю в данном примере addChild, не на что ссылаться - почему не удаляется объект в Примере_3 ????
0
Вложения
Тип файла: 7z Пример3.7z (38.4 Кб, 10 просмотров)
TanaTiX
Модератор
2798 / 1655 / 168
Регистрация: 19.02.2011
Сообщений: 6,018
Завершенные тесты: 2
03.10.2013, 11:54 4
Serega931, кто учил давать такие названия переменным?
В примере переменная aaa вообще лишняя.
На счет удаления - я не вижу удаления объектов со сцены, только с массива.
0
Serega931
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 46
03.10.2013, 16:54  [ТС] 5
Цитата Сообщение от TanaTiX Посмотреть сообщение
кто учил давать такие названия переменным?
Сори
Цитата Сообщение от TanaTiX Посмотреть сообщение
В примере переменная aaa вообще лишняя.
Согласен, все!!! ее убрал, ее больше нет.
Цитата Сообщение от TanaTiX Посмотреть сообщение
На счет удаления - я не вижу удаления объектов со сцены, только с массива.
На сколько я понимаю создается объект и ссылка на него помещается в массив, далее мы добавляем addChild(loaders[i]); на сцену, а addChild это тоже ссылка, то есть получается addChild это ссылка и ссылается на массив, в котором тоже ссылка на объект, далее очищаем массив и получается так: addChild это ссылка и ссылается на массив, что бы показать объект, а в массиве пусто, таким образом addChild не может дойти до объекта ссылка обрублена, следовательно удаление - это мое понимание происходящего, правильно??? или как то по другому
0
TanaTiX
Модератор
2798 / 1655 / 168
Регистрация: 19.02.2011
Сообщений: 6,018
Завершенные тесты: 2
03.10.2013, 17:10 6
Цитата Сообщение от Serega931 Посмотреть сообщение
и ссылка на него помещается в массив
Да, но ссылка на него сохраняется и на сцене, пока он на ней присутствует. Для удаления со сцены существуют методы removeChild, removeChildAt, removeChildren (не во всех версиях ФП)
Цитата Сообщение от Serega931 Посмотреть сообщение
addChild это тоже ссылка
это метод, который возвращает ссылку на добавляемый объект
Цитата Сообщение от Serega931 Посмотреть сообщение
то есть получается addChild это ссылка и ссылается на массив
Объекты храняться сами по себе, ссылки сами по себе. На один объект может ссылаться несколько переменных.
0
Serega931
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 46
03.10.2013, 17:35  [ТС] 7
То есть, я переделываю функцию на удаление в Пример_3:
ActionScript 3
1
2
3
4
5
6
7
8
public function remove(e:MouseEvent):void
        {
            for (var i:int = 0; i < 10; i++)
            {
                removeChild(loaders[i]);
            }
            loaders.length = 0;
        }

тогда все указанные объекты ПОЛНОСТЬЮ будут удалены со сцены и из памяти ???
Или в Примере_3 где то еще хранятся ссылки на объект(о которых я не подозреваю) ???
0
TanaTiX
Модератор
2798 / 1655 / 168
Регистрация: 19.02.2011
Сообщений: 6,018
Завершенные тесты: 2
03.10.2013, 18:35 8
Serega931, правильно, больше ссылок нет
0
Serega931
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 46
06.10.2013, 00:02  [ТС] 9
Сейчас разобрал другие примеры, переделал их и все работает.
Большое спасибо за помощь
0
06.10.2013, 00:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2013, 00:02

Создание нового экземпляра дочернего класса из экземпляра базового
Всем привет! Извиняюсь, если вопрос глупый, но что-то не смог найти конкретный ответ на него... ...

При создании экземпляра класса, создается 2 экземпляра вместо 1
Подсчет экземпляров ведется с помощью статического члена num_dogs, который во всех трех...

Сложение экземпляра базового класса и экземпляра наследника
Добрый вечер! Моя задача - сложить экземпляр базового класса и наследника. Нужно сделать так, чтобы...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru