![]() |
|
||||||||||
|
|||||
|
Цитата:
Использование интерфейса должно быть оправдано. В данном случае он пригодился бы, если бы эту swf загружали лоадером в другую в дочерний аппдомен. Вот тогда интерфейс будет нужен в данном конкретном случае. Вдумайтесь в само слово "интерфейс".
__________________
тут я |
|
|||||
|
Цитата:
Последний раз редактировалось KumoKairo; 26.08.2013 в 20:06. |
|
|||||
|
Я уверен что вы реально не хотите то что просите, но вообще говоря есть у меня тут... Там показано как дёргать конструкторы много раз. Но повторюсь, бойтесь своих желаний, они имеют свойство сбываться.
И, да, так делать нельзя, неправильно, криво и костыльно. Иногда про такое лучше не знать, но раз просили ![]()
__________________
:) |
|
|||||
|
Регистрация: Mar 2013
Сообщений: 290
|
Прочитал камменты.
Складывается впечатление, что лучше не учится плохому, и такой подход не использовать. Ок, будем пробовать по совету Apokalipsis, разбить Main() на кучу классов. |
|
|||||
|
Регистрация: Mar 2013
Сообщений: 290
|
KumoKairo, ну это метод который belv посоветовал, с повторным вызовом функции init() вместо конструктора, если я правильно понял вашу мысль.
Ну, тут ниже вроде как выясняется, что это тоже зло, и "вообще так нельзя" : ) Хотя, разумеется, я и так попробую. |
|
|||||
|
Этот метод не будет работать только в том случае, если вам ну очень нужно использовать конструктор суперкласса.
Если хочется сделать полный вайп "программы" и перезапуск, просто перенесите весь логический код (создание кнопок, добавление на экран и прочее) из вашего в Main в SubMain и просто пересоздавайте этот объект SubMain При этом ничего городить с "кучей классов" и интерфейсами не нужно совершенно Цитата:
|
|
|||||
|
Цитата:
Давайте рассмотрим на примере: у нас есть некая игра, допустим аэрохоккей. В нем участвуют для простоты три различных объекта: это табло с очками, оппонент и свой игрок. Требуется начать игру заново. Пересоздавать игровое поле и табло нам не нужно, поэтому смело их оставляем. Однако, у табло нужно вызвать соответствующий метод, который бы обнулил очки. Далее, оппонент и свой игрок. Их совсем удалять не следует, а вот остановить логику выполнения, чтобы оппонент перестал играть, а свой игрок реагировать на мышь, нужно. В итоге в init мы имеем проверки: если оппонент создан, то запускаем логику. Если свой игрок создан, то запускаем логику. Если табло создано, то ничего не делаем. Немножко псевдокода: private function restart():void { dispose(); init(); } private function dispose():void { _scoreboard.restart(); // останавливаем логику _enemyPlayer.stop(); // очищаем, если что-либо нужно очистить _enemyPlayer.dispose(); // останавливаем логику _selfPlayer.stop(); // очищаем, если что-либо нужно очистить _selfPlayer.dispose(); } private function init() { if (_enemyPlayer === null) { _enemyPlayer = new EnemyPlayer(); } else { _enemyPlayer.init(); } if (_selfPlayer === null) { _selfPlayer = new SelfPlayer(); } else { _selfPlayer.init(); } if (_scoreboard === null) { _scoreboard = new Scoreboard(); } }
__________________
тут я |
|
|||||
|
Регистрация: Mar 2013
Сообщений: 290
|
KumoKairo, КорДум, спасибо за уточнения, тогда пробуем реализацию с init-подходом.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 02:28. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| constructor , повторный вызов |
|
|