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

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

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

Регистрация: Nov 2008
Сообщений: 14
По умолчанию Child создается с задержкой в 1 фрейм

Удивительное дело, в упор не понимаю происходящего.
В as1/2 при переходе в кадр x (при смене кадров или goto) сначала инициировалось программное окружение (клипы всякие и пр.), только потом срабатывал код. В as3 наблюдаю странную задержку.

Новый фильм, в 1м кадре ничего, в 2м - клип, имя box
Documant class=mainDoc
Код AS3:
mainDoc.as:
package {
	import flash.display.MovieClip;
	import flash.events.*;
 
	public class mainDoc extends MovieClip {
		public function mainDoc () {
			trace ("main doc")
			addEventListener(Event.ENTER_FRAME, refresh);
		}
		public function refresh (evt:Event) {
			trace (currentFrame + "\t\t" + box )
			if (currentFrame == 2) stop();
		}
	}
 
}
 
Трассировка:
main doc
2		null
2		[object MovieClip]
2		[object MovieClip]
2		[object MovieClip]
2		[object MovieClip]
Т.о. содержимое 2го кадра создается в памяти не при входе в 2й кадр, а с задержкой. Объясните, плиз, КАК это может быть???

Старый 14.11.2008, 18:48
Xpb7 вне форума Посмотреть профиль Отправить личное сообщение для Xpb7 Найти все сообщения от Xpb7
  № 2  
Ответить с цитированием
Xpb7

Регистрация: Jul 2008
Адрес: Рига
Сообщений: 176
Так и есть, всё правильно, и с этим ничего не поделаешь.
Сначала вы входите во 2й фрэим, в первую очередь выполняется код, а в коде вы сразу пытаетесь связаться
с вашим клипом box, но он ещё не был добавлен на сцену!
Вообще не советую использовать ваш подход, но решение - Event.ADDED_TO_STAGE.

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

Регистрация: Jul 2007
Адрес: Дубна, Моск.обл.
Сообщений: 108
Объясните, пожалуйста, почему тут работает обращение к клипу box, лежащему на сцене, по имени, ведь класс не динамический и обращение осуществляется не через getChildByName(). По идее компилятор должен выдать ошибку, что свойство box в классе не найдено!..

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

Регистрация: Nov 2008
Сообщений: 14
Сорри, не понимаю. Как привязать событие ADDED_TO_STAGE к появлению box-а, которого еще нет?

Добавлено через 2 часа 4 минуты
Решил для себя эту задачу так:

Код AS3:
package {
	import flash.display.MovieClip;
	import flash.events.*;
 
	public class mainDoc extends MovieClip {
 
		public function mainDoc () {
			trace ("main doc")
			addEventListener(Event.ADDED, newObjAdded);
		}
 
		public function newObjAdded (evt:Event) {
			if (evt.target.name == "box") {
				trace ("УРА!");
				stop();
				evt.target.alpha = 0;
			}
		}
 
	}
 
}
Насколько это решение идиотское?

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

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

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


 


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


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