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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.10.2013, 18:32
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 1  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
По умолчанию Очередь добавления в DOC

Вообще я очень удивлён, так как считал, что когда мы документ класс подписываем под ADDED_TO_STAGE,
то код в обработчике событий выполнится только после добавления Main на stage и как я считал ( наверное ошибочно ), что именно в этот момент, он добавится и DOC. Неужели Main добавляется в DOC только тогда, когда, что то добавится в Main?

Старый 25.10.2013, 19:01
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Что за ахинея. С чего вы решили, что пока в мейник не добавлено ничего, его нет? Конечно же есть. Открытие окна ( при компиляции ) это и есть ваш мейн по сути. Мейн на стейдж добавляется автоматически, в случае если это не подгружаемая флешка. Посему в констуркторе основного мейна достаточно init() без всяких эддед ту стейдж и проверок
__________________
Марк Tween

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

Регистрация: Mar 2013
Сообщений: 1,864
in4core сейчас я расскажу Вам в чём дело.
От кода ниже я ожидал, что сначала в ДОК добавится Main, а уже потом Sprite.
Но на деле наоборот.
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
 
	public class Main extends Sprite
	{
		private var _view:View;
		public function Main() 
		{
			if (stage)init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		private function init(event:Event=null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
 
			_view = new View(this);
			var sprite:Sprite = new Sprite();
			_view.addedChild(sprite);
		}
	}
}
Код AS3:
package 
{
	import flash.display.DisplayObject;
	import flash.display.DisplayObjectContainer;
	import flash.events.Event;
 
	public class View 
	{
		private var _doc:DisplayObjectContainer;
 
		public function View(doc:DisplayObjectContainer) 
		{
			_doc = doc;
			_doc.addEventListener(Event.ADDED, doc_addedHandler);
		}
		public function addedChild(child:DisplayObject):void
		{
			_doc.addChild(child as DisplayObject);
		}
		private function doc_addedHandler(event:Event):void 
		{
			trace(event.target);
		}
 
	}
}

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

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
_doc это и есть мейн.
На момент создания _view - он уже на стейдже, соответственно событие не отрабатывает.
__________________
Кто к нам с чем для чего - тот у нас того от того.

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

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


Последний раз редактировалось Babylon; 25.10.2013 в 22:30.
Старый 25.10.2013, 19:29
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 6  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
>>На момент создания _view - он уже на стейдже

не, на стейдж он попадет после того как конструктор отработает
т.е. первый вызов от добавления спрайта, второй от добавления самого main
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
 
	public class Main extends Sprite
	{
		private var _view:View;
		public function Main() 
		{
 			_view = new View(this);
			var sprite:Sprite = new Sprite();
			_view.addedChild(sprite);
			trace("consructor comleted");
		}
	}
}
Добавлено через 57 секунд
>>Надо заметить что main на стейдж не добавляется
это почему ?

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

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

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

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
>>что значит добавляется main?
значит что экземпляр документ класса добавляется как child на stage

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

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

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

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Цитата:
не, на стейдж он попадет после того как конструктор отработает
Че-то я не понял.
В конструкторе мы смотрим - стейдж есть (значит уже на стейдже) или нету. Если нету - то асинхронная подписка.
В любом случае в ините мейн уже на стейдже, как бы там события не развивались до этого.
__________________
Кто к нам с чем для чего - тот у нас того от того.

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

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

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


 


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


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