![]() |
Конструктор: повторный вызов
Допустим есть класс Main с конструктором Main() и рядом методов.
1. Можно ли изнутри одного из методов запустить конструктор Main() повторно? 2. Если даже это технически возможно, будет ли это правильно, делается ли такое? |
Правильнее написать в конструкторе вызов метода init();(какое имя дадите), в этом методе выполняйте все действия, которые хотели выполнить в конструкторе.Для повторного выполнения Вам просто нужно будет вызвать этот метод init();
|
Понятно, спасибо. Это было слишком просто, чтобы сразу сообразить.
Но, выходит, что нет функции, навроде Main(), или аналога super(), в арсенале стандартных средств. Следовательно, по канону предполагается, что ход исполнения, выйдя из конструктра один раз, уже не должен возвращаться обратно. |
Конструктор главного класса, выполняется только один раз автоматически, при запуске программы.Да и как в принципе любого другого класса, когда Вы создаете экземпляр этого класса.Второй раз его вызвать нельзя.
super(); используется для вызова конструктора своего суперкласса(предка). |
Ну вот простой пример, я написал тестовую микро-программку, вызывающую мувики по нажатию кнопок.
Все это сделано в одном классе Main() который является документ-классом. Конструктор содержит только методы, которые запускают всё остальное. Есть также метод, который по таймеру вызывает завершение программки. И вот я хочу сделать нечто вроде Запустить снова? (Да/Нет), но для этого, мне вроде как нужно запускать заново весь код. То есть, рассуждая по-нубовски, тупо перезапустить конструктор (по нажатию "Да"). Можно конешно сделать так, как посоветовал belv, общую функцию в конструктор добавить. И её запускать по нажатию кнопки. Так, в данном случае наверное проще всего получится. Но как это сделать, создав некий сторонний класс... Я не особо представляю. Не подскажите в общих чертах? Или надо было такие вещи как запуск, перезапуск, выход, в Main-классе и задавать, а логику исполнения программы в отдельных. |
okouser, спасибо за наводку, поразбираю тему интерфейсов.
Ну, я во флэш идэ работаю, не во флексе. |
Цитата:
|
КорДум, а как еще можно?
|
Плохой тон писать в кадрах, но еще хуже создавать интерфейс просто чтобы заставить какой-либо класс реализовать определенные методы.
У вас было: Код AS3:
Код AS3:
Цитата:
|
Цитата:
Автору - вы разбейте логику на классы, начните с двух, Main и YourClass. В главном классе Main сделайте кнопки, которые будут создаваться при запуске программы. По нажатию на кнопку создавайте новый экземпляр класса YourClass, но сделайте проверку на раннее созданные экземпляры как выше. Когда у вас получится, то начните с создания классов кнопок, то есть вынесете их в отдельные классы и создавайте потом их экземпляры. Но создавайте их не в Main, а сделайте ещё один класс ( главный класс вашего приложения ), который будет добавляться в Main. и так по нарастающей... |
| Часовой пояс GMT +4, время: 05:15. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.