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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.10.2013, 19:44
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 11  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Имеется ввиду что как только main добавляется в стейдж вызывается init(); А так как main это экземпляр то сначала отрабатывает конструктор. Я лично так понимаю.

Старый 25.10.2013, 19:47
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 12  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Цитата:
Сообщение от Dukobpa3 Посмотреть сообщение
В конструкторе мы смотрим - стейдж есть (значит уже на стейдже) или нету.
не, не значит
есть ссылка на stage и только в том случае когда флешка запускается прямо в плеере, если подгружается то нет и ссылки
но это не значит, что спрайт уже добавлен, да и как, если он еще не создан ?

Старый 25.10.2013, 19:49
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 13  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
silin, я правильно написал?

Старый 25.10.2013, 19:57
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 14  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
эта конструкция
Код AS3:
if (stage)init();
else addEventListener(Event.ADDED_TO_STAGE, init);
актуальна для подгружаемых мувиков в случае если в конструкторе(при создании) нужен доступ к stage
для 'головного' мувика ссылка на stage уже есть, поэтому сразу отрабатывает init

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Имеется ввиду что как только main добавляется в стейдж вызывается init(); А так как main это экземпляр то сначала отрабатывает конструктор. Я лично так понимаю.
Нет. Документ-класс получает ссылку на стейдж волшебным способом ДО того, как будет создан и добавлен. Иначе условие не имело бы смысла. Уберите подписку, обращайтесь сразу к стейдж в конструкторе — и никаких проблем, стейдж есть в конструкторе, а не после него.
Весь этот эпиграф с подпиской только на случай загрузки в другую флэшку.
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 25.10.2013 в 21:12.
Старый 25.10.2013, 20:53
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 16  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
silin Спасибо! я кажется разобрался. Так как stage уже есть, срабатывает init(), который создаёт sprite до завершения выполнения конструктора.
Но если честно, то я думал, что пока не добавится Main не может добавиться нечего.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Чтобы разобраться надо всего два трейса вставить
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
 
	public class Main extends Sprite 
	{
 
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
			trace("Constructor");
		}
 
		private function init(event:Event = null):void 
		{
			trace("Init", event);
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
		}
	}
}
Добавлено через 7 минут
Цитата:
пока не добавится Main не может добавиться нечего
Вы же подписываетесь на ADDED а не на ADDED_TO_STAGE.
__________________
Reality.getBounds(this);

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

Регистрация: Mar 2013
Сообщений: 1,864
Wolsh Спасибо! Капельку рад что разобрался в этом сейчас.

Старый 25.10.2013, 21:48
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 19  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Уолш, но ведь stage является контейнером. Чтобы добавить экземпляр Main его как минимум надо создать, и следовательно вызвать конструктор.

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

Регистрация: Mar 2013
Сообщений: 1,864
У меня тоже вызывает некое недоумение эта ситуация, ведь, как все говорят - мы добавляем обьекты в класс Main. И получается, что добавили ещё до его создания. я эту интригу обьяснил так - пусть майн ещё не создан, но мы и не добавляем не чего в майн, мы ведь тип режим ДОКом. И тогда само напрашивается, что ДОК тоже есть сразу.

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

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

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


 


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


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