PDA

Просмотр полной версии : Как сбросить статические свойства класса.


artfabrique
18.12.2007, 15:34
Есть игра - гоночки. Главные классы - State_game, Hero, LevelMap, LevelTile (надеюсь из названий понятно что для чего).

В начале игры после клаца в меню по кнопке играть создаю в документ классе Экземпляр State_game а в нем поочереди всё остальное - Карту(LevelMap), Героя(Hero) итд.

После того как проехали мне нада сбросить на исхдные значения все эти классы. Я удаляю чаилд Докуметкласса - State_game а потом заного создаю но при этом параметры не сбрасываются не в нем не в классах, которые были в нем созданы. А так же остаются все листенеры на клаву и контролзы после удаления самих обьектов на которые были повешены листенеры. И соответственно с каждым перезапуском игры на каждую кнопку добавляется новый листенер.

Итак как правильней реализовать "зачистку" после игры? Жду советов.

гамеса кстати тут:
http://postcards.megafonnw.ru/2008g/
если сочтете за рекламу то удаляйте

etc
18.12.2007, 15:38
Написать функцию сброса стат. значений и убийства всех спрайтов.

artfabrique
18.12.2007, 16:08
спрайты то убиваются так как они все дети State_game.
меня интересует такой вопрос убивается ли сам класс когда я пишу

var CurrentState = new State_game();
addChild(CurrentState);
removeChild(CurrentState);
delete CurrentState;


а также можно ли повесить слушатель на событие удаления, который бы вызывал функцию, которая бы пробугала по всем листенерам данного обьекта и ремувила их?

etc
18.12.2007, 16:17
Причем тут стат. свойства и экземляр класса? Это разные вещи.

Написать обработчик удаления можно, только вот если экземляр подписан на свои собственные события, то смысла от них отписываться никакого нет.

artfabrique
18.12.2007, 17:21
ну я просто подумал что можно не "обнулять" статику, а удалять все экземпляры класа, тогда по идее при последующем создании класса вновь они должны принять свои начальные значения - так?

и ещё - если не отписываться от событий то помоему, каждая новая подписака одной и той же функции к одному и тому-же событию приведет к глюкам - например, если мы на кнопку "вниз" вешаем функцию мувДаун() а после этого опять на этоже событие вешаем мувДаун то при нажатии на кнопку она будет вызвана 2 раза. По крайней мере у меня так почему-то глючит

etc
18.12.2007, 17:39
Нет, статика есть статика и она не привязана к экземлярам никаким образом.

Второй раз подписка одного и того же обработчика не сработает.

librio
19.12.2007, 18:18
- removeChild - не убивает объект, а только удаляет из displayList. Для полного удаления присваивай его null.
На счет статических переменных посмотри в хелпе или еще где, если не понятно почему они остаются. Это основы язака (причем не только и не столько AS) :)