![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2013
Сообщений: 290
|
Допустим есть класс Main с конструктором Main() и рядом методов.
1. Можно ли изнутри одного из методов запустить конструктор Main() повторно? 2. Если даже это технически возможно, будет ли это правильно, делается ли такое? |
|
|||||
|
[+1 16.07.13]
[+4 16.07.13] Регистрация: Oct 2005
Сообщений: 217
|
Правильнее написать в конструкторе вызов метода init();(какое имя дадите), в этом методе выполняйте все действия, которые хотели выполнить в конструкторе.Для повторного выполнения Вам просто нужно будет вызвать этот метод init();
|
|
|||||
|
Регистрация: Mar 2013
Сообщений: 290
|
Понятно, спасибо. Это было слишком просто, чтобы сразу сообразить.
Но, выходит, что нет функции, навроде Main(), или аналога super(), в арсенале стандартных средств. Следовательно, по канону предполагается, что ход исполнения, выйдя из конструктра один раз, уже не должен возвращаться обратно. |
|
|||||
|
[+1 16.07.13]
[+4 16.07.13] Регистрация: Oct 2005
Сообщений: 217
|
Конструктор главного класса, выполняется только один раз автоматически, при запуске программы.Да и как в принципе любого другого класса, когда Вы создаете экземпляр этого класса.Второй раз его вызвать нельзя.
super(); используется для вызова конструктора своего суперкласса(предка). |
|
|||||
|
Регистрация: Mar 2013
Сообщений: 290
|
Ну вот простой пример, я написал тестовую микро-программку, вызывающую мувики по нажатию кнопок.
Все это сделано в одном классе Main() который является документ-классом. Конструктор содержит только методы, которые запускают всё остальное. Есть также метод, который по таймеру вызывает завершение программки. И вот я хочу сделать нечто вроде Запустить снова? (Да/Нет), но для этого, мне вроде как нужно запускать заново весь код. То есть, рассуждая по-нубовски, тупо перезапустить конструктор (по нажатию "Да"). Можно конешно сделать так, как посоветовал belv, общую функцию в конструктор добавить. И её запускать по нажатию кнопки. Так, в данном случае наверное проще всего получится. Но как это сделать, создав некий сторонний класс... Я не особо представляю. Не подскажите в общих чертах? Или надо было такие вещи как запуск, перезапуск, выход, в Main-классе и задавать, а логику исполнения программы в отдельных. Последний раз редактировалось Fogflasher; 26.08.2013 в 16:17. |
|
|||||
|
Регистрация: Mar 2013
Сообщений: 290
|
okouser, спасибо за наводку, поразбираю тему интерфейсов.
Ну, я во флэш идэ работаю, не во флексе. |
|
|||||
|
Регистрация: Mar 2013
Сообщений: 290
|
КорДум, а как еще можно?
|
|
|||||
|
Плохой тон писать в кадрах, но еще хуже создавать интерфейс просто чтобы заставить какой-либо класс реализовать определенные методы.
У вас было: public function Main() { var myLittleSprite:Sprite = new Sprite(); addChild(myLittleSprite); } public function Main() { init(); } private function init():void { while (numChildren > 0) { removeChildAt(0); } var myLittleSprite:Sprite = new Sprite(); addChild(myLittleSprite); } Цитата:
|
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
Автору - вы разбейте логику на классы, начните с двух, Main и YourClass. В главном классе Main сделайте кнопки, которые будут создаваться при запуске программы. По нажатию на кнопку создавайте новый экземпляр класса YourClass, но сделайте проверку на раннее созданные экземпляры как выше. Когда у вас получится, то начните с создания классов кнопок, то есть вынесете их в отдельные классы и создавайте потом их экземпляры. Но создавайте их не в Main, а сделайте ещё один класс ( главный класс вашего приложения ), который будет добавляться в Main. и так по нарастающей... |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:31. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| constructor , повторный вызов |
| Опции темы | |
| Опции просмотра | |
|
|