Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.08.2013, 14:39
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 1  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
По умолчанию Конструктор: повторный вызов

Допустим есть класс Main с конструктором Main() и рядом методов.

1. Можно ли изнутри одного из методов запустить конструктор Main() повторно?

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

Старый 26.08.2013, 15:04
belv вне форума Посмотреть профиль Отправить личное сообщение для belv Найти все сообщения от belv
  № 2  
Ответить с цитированием
belv
[+1 16.07.13]
[+4 16.07.13]

Регистрация: Oct 2005
Сообщений: 217
Правильнее написать в конструкторе вызов метода init();(какое имя дадите), в этом методе выполняйте все действия, которые хотели выполнить в конструкторе.Для повторного выполнения Вам просто нужно будет вызвать этот метод init();

Старый 26.08.2013, 15:20
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 3  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
Понятно, спасибо. Это было слишком просто, чтобы сразу сообразить.

Но, выходит, что нет функции, навроде Main(), или аналога super(), в арсенале стандартных средств.
Следовательно, по канону предполагается, что ход исполнения, выйдя из конструктра один раз, уже не должен возвращаться обратно.

Старый 26.08.2013, 15:33
belv вне форума Посмотреть профиль Отправить личное сообщение для belv Найти все сообщения от belv
  № 4  
Ответить с цитированием
belv
[+1 16.07.13]
[+4 16.07.13]

Регистрация: Oct 2005
Сообщений: 217
Конструктор главного класса, выполняется только один раз автоматически, при запуске программы.Да и как в принципе любого другого класса, когда Вы создаете экземпляр этого класса.Второй раз его вызвать нельзя.
super(); используется для вызова конструктора своего суперкласса(предка).

Старый 26.08.2013, 15:49
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 5  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
Ну вот простой пример, я написал тестовую микро-программку, вызывающую мувики по нажатию кнопок.
Все это сделано в одном классе Main() который является документ-классом.
Конструктор содержит только методы, которые запускают всё остальное.
Есть также метод, который по таймеру вызывает завершение программки.

И вот я хочу сделать нечто вроде Запустить снова? (Да/Нет), но для этого, мне вроде как нужно запускать заново весь код.
То есть, рассуждая по-нубовски, тупо перезапустить конструктор (по нажатию "Да").

Можно конешно сделать так, как посоветовал belv, общую функцию в конструктор добавить.
И её запускать по нажатию кнопки. Так, в данном случае наверное проще всего получится.

Но как это сделать, создав некий сторонний класс... Я не особо представляю.

Не подскажите в общих чертах?

Или надо было такие вещи как запуск, перезапуск, выход, в Main-классе и задавать, а логику исполнения программы в отдельных.


Последний раз редактировалось Fogflasher; 26.08.2013 в 16:17.
Старый 26.08.2013, 16:25
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 6  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
okouser, спасибо за наводку, поразбираю тему интерфейсов.
Ну, я во флэш идэ работаю, не во флексе.

Старый 26.08.2013, 16:36
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 7  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
Сделайте интерфейс вида
Интерфейс ради интерфейса? Здесь он не нужен.
__________________
тут я

Старый 26.08.2013, 16:52
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 8  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
КорДум, а как еще можно?

Старый 26.08.2013, 17:07
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 9  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Плохой тон писать в кадрах, но еще хуже создавать интерфейс просто чтобы заставить какой-либо класс реализовать определенные методы.
У вас было:
Код AS3:
public function Main()
{
	var myLittleSprite:Sprite = new Sprite();
	addChild(myLittleSprite);
}
Станет
Код AS3:
public function Main()
{
	init();
}
 
private function init():void
{
	while (numChildren > 0) {
		removeChildAt(0);
	}
	var myLittleSprite:Sprite = new Sprite();
	addChild(myLittleSprite);
}
Какие интерфейсы?

Цитата:
А что есть "флэш идэ"?!
Под флеш ИДЕ обычно понимают Флеш Про. Да, ту самую визуальную среду разработки

Старый 26.08.2013, 17:15
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 10  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
сотней подпроектов и с тысячами классов
Неужели не понятно, что автору далековато ещё до интерфейсов? Если он даже не знает, как создать и использовать сторонний класс, то зачем ему говорить об итерфейсах?
Автору - вы разбейте логику на классы, начните с двух, Main и YourClass. В главном классе Main сделайте кнопки, которые будут создаваться при запуске программы. По нажатию на кнопку создавайте новый экземпляр класса YourClass, но сделайте проверку на раннее созданные экземпляры как выше.
Когда у вас получится, то начните с создания классов кнопок, то есть вынесете их в отдельные классы и создавайте потом их экземпляры. Но создавайте их не в Main, а сделайте ещё один класс ( главный класс вашего приложения ), который будет добавляться в Main. и так по нарастающей...

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:03.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
constructor , повторный вызов

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:03.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.