![]() |
|
||||||||||
|
|||||
|
[+3 05.12.12]
Регистрация: Mar 2012
Сообщений: 46
|
Добрый день,уважаемые гуру.Столкнулся с такой проблемой,можете подсказать?
Вот пример главного класса(допустим игры) и класса героя: package { import flash.display.*; import flash.events.*; public class Main extends MovieClip { public var hero; public function Main() { hero1 = new hero(this); gamelevel.addChild(hero1); .................................. gamelevel.removeChild(hero1); } } } package { import flash.display.*; import flash.events.*; public class hero extends MovieClip { public var Main; var herobullet:bullet; public function hero(main) { Main = main; herobullet = new bullet; Main.addChild(herobullet); .................................. } Удаляется ли herobullet с экрана ,когда я удаляю hero1 через removeChild?Или мне надо его удалить отдельно?Если да,то как я это должен прописать в классе Main?Спасибо |
|
|||||
|
Цитата:
не будет работать сработает эта: П.с. вообще никогда не нужно называть классы с маленькой буквы. Это плохой тон. А в данном, конкретном случае еще и переменная hero называется как класс, это не допустимо. Классы всегда именуются с большой буквы, переменные и функции с маленькой. Плюс к тому нужно типизировать переменные, а не писать просто var hero; п.п.с. Для начала конечно можно не париться на счет того, что я напишу дальше, лучше разобраться с тем как вообще правильно именовать объекты, понять что регистр имеет значение, что такое контейнеры и как их используют. Но в дальнейшем лучше избегать передачи ссылок на главный класс куда-либо. Это приводит к большой связанности кода. |
|
|||||
|
[+3 05.12.12]
Регистрация: Mar 2012
Сообщений: 46
|
За плохой тон спасибо,буду соблюдать.Пуля не в контейнере.И как нужно типизировать переменную?
|
|
|||||
|
Цитата:
Цитата:
Но для начала нужно переименовать класс hero в Hero |
|
|||||
|
[+3 05.12.12]
Регистрация: Mar 2012
Сообщений: 46
|
Спасибо,значит - gamelevel.removeChild(hero1),я удаляю сразу и herobullet?
|
|
|||||
|
если они оба добавлены в gamelevel, то да. Но удалятся они только с экрана. В памяти они так же будут болтаться и процессорные ресурсы так же будут отжирать, если на них где-то останутся ссылки. Если ссылок нет, никакие слушатели не подписаны, то их при необходимости снесет сборщик мусора
|
|
|||||
|
[+3 05.12.12]
Регистрация: Mar 2012
Сообщений: 46
|
hero = null; - это поможет? или надо еще отследить все ссылки и их тоже удалять?
|
|
|||||
|
[+3 05.12.12]
Регистрация: Mar 2012
Сообщений: 46
|
Все огромное и человеческое спасибо!!!
|
![]() |
![]() |
Часовой пояс GMT +4, время: 09:42. |
|
|
« Предыдущая тема | Следующая тема » |
|
|