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

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

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

Регистрация: Mar 2009
Сообщений: 65
Attention как достучаться до child'ов Мувика, которые находятся не в первом фрейме таймлайна

Есть такая проблема : у меня есть мувиклип "main" который загружается на сцену. Этот мувиклип состоит из 3-х кадров, в которых также находятся дочерние мувиклипы . Так вот достучаться я могу только до того дочернего мувиклипа, который находится в первом кадре (и естественно до его чайлдов, если такие имеются). Как мне достучаться до дочернего мувиклипа , который находится например в третьем кадре основного мувика? Когда я пытаюсь это сделать , то ловлю эксепшн (типо пытаюсь обратиться к null object).

Исходник с тестом прилагается:

Я с флешем не очень знаком (работаю с Флексом), подскажите пожалуйста как я могу зафиксать эту проблемку ...

Заранее Благодарю.
Вложения
Тип файла: rar flash_test.rar (20.8 Кб, 46 просмотров)

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

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
могу только предложить посмотреть как и что
Код AS3:
private function onClickBtn3(event:MouseEvent):void
{
	main.gotoAndStop("anim3");
	addEventListener(Event.ENTER_FRAME, delayedAction);
 
}
 
private function delayedAction(evnt:Event):void 
{
	trace( "main.obj_3_frame : " + main.obj_3_frame );
	if (main.obj_3_frame)
	{
		removeEventListener(Event.ENTER_FRAME, delayedAction);
		main.obj_3_frame.rotateObj.rotation = main.obj_3_frame.rotateObj.rotation + 30;
	}
 
}
ну и самому решить: а оно тебе надо, в смысле размещать какую-то логику в кадрах?

Старый 19.03.2009, 12:41
Gogan вне форума Посмотреть профиль Отправить личное сообщение для Gogan Найти все сообщения от Gogan
  № 3  
Ответить с цитированием
Gogan

Регистрация: Mar 2009
Сообщений: 65
Аж стыдно что сам не догадался поставить задержку, конечно костыль, но думаю пойдёт . silin огромное спасибо!

Дело в том, что я должен вызывать различную анимацию(смех, прыжки, бег и т.д.) загружаемых во Флекс аваторов (персонажей, которые сделана на Флеше). И заказчик просит , чтобы они были как можно проще реализованы, чтобы аниматор мог потом по моему примеру создавать других аваторов. Я видел как работает этот "аниматор", он реально знаком с Флешем на уровне создать шарик и переместить его на таймлайне с помощью Create Motion Tween в лучшем случае, большинство анимации тупо нарисовано в кадрах, а про знании хотя бы о существовании AS я вообще молчу. Так вот мой вариант реализации аватара им вроде понравился и понятен.
Я с флешем знаком не очень хорошо, поэтому не знаю как лучше организовать смену анимации , вот и выбрал движение по кадрам. Я так понимаю, что правильней было бы разбить анимацию на отдельные мувики и грузить их по мере необходимости на сцену , а предыдущих удалять?

Если не сложно , не могли бы вы посоветовать как было бы правильней организовать мувики в моем случае, ну или дать линку на похожий пост ?

Спасибо.


Последний раз редактировалось Gogan; 19.03.2009 в 12:44.
Старый 19.03.2009, 13:51
litebox вне форума Посмотреть профиль Отправить личное сообщение для litebox Найти все сообщения от litebox
  № 4  
Ответить с цитированием
litebox
 
Аватар для litebox

Регистрация: Jul 2008
Адрес: Украина, Киев
Сообщений: 253
если уж существует такая необходимость, то можно поступить так:
Код AS3:
addEventListener(Event.ADDED, eventFrameChange);
оно будет срабатывать каждый раз, когда произошло изменение кадра и содержимое добавлено.
Только в самом обработчике нужно будет анализировать e.target на предмет того, что добавлено, т.к. обработчик будет срабатывать на все элементы: на клипы, кнопки, графику и т.д.
Еще вариант, в нужном кадре делать dispatchEvent своего события, например AVATAR_ADDED, в классе подписаться на это событие и определить функцию, которая будет работать с этим клипом так, как будто клип находится в первом кадре. Но заставить с этим вариантом работать дизайнера - задача куда более сложная

Старый 19.03.2009, 13:55
Arif flasher вне форума Посмотреть профиль Отправить личное сообщение для Arif flasher Посетить домашнюю страницу Arif flasher Найти все сообщения от Arif flasher
  № 5  
Ответить с цитированием
Arif flasher
[+4 14.03.09]
 
Аватар для Arif flasher

Регистрация: Mar 2009
Адрес: Баку, город ветров
Сообщений: 51
Отправить сообщение для Arif flasher с помощью ICQ Отправить сообщение для Arif flasher с помощью MSN Отправить сообщение для Arif flasher с помощью Skype™
Цитата:
Сообщение от Gogan Посмотреть сообщение

Если не сложно , не могли бы вы посоветовать как было бы правильней организовать мувики в моем случае, ну или дать линку на похожий пост ?

Спасибо.
да, анимации лучше сохранять в разных файлах. Так и этому "аниматору" будет легче создавать их и добавлять в основной муви клип.
Вот, не поленился и сделал все с нуля. Надеюсь это хоть как-то поможет тебе:

это пример с использованием компонента (в этом случае я сомневаюсь что можно будет обращаться к дочерним элементам загружаемого мувика, хотя нужно проверить), можно еще и с использованием муви клипов (а так точно можно обращаться к дочерним анимациям). Если захочешь то с муви клипом тоже сделаю.
Вложения
Тип файла: rar multi-animation.rar (177.7 Кб, 35 просмотров)
__________________
Учусь флэшу с 01.01.2009
Status: Beginner


Последний раз редактировалось Arif flasher; 19.03.2009 в 13:59.
Старый 19.03.2009, 14:17
Gogan вне форума Посмотреть профиль Отправить личное сообщение для Gogan Найти все сообщения от Gogan
  № 6  
Ответить с цитированием
Gogan

Регистрация: Mar 2009
Сообщений: 65
Всем огромное спасибо за информацию, очень помогли ваши посты!
Попробую объяснить заказчику более правильный вариант реализации аваторов (думаю скорее придётся ему дать урок по Флешу и AS3 ).

Старый 19.03.2009, 15:19
Arif flasher вне форума Посмотреть профиль Отправить личное сообщение для Arif flasher Посетить домашнюю страницу Arif flasher Найти все сообщения от Arif flasher
  № 7  
Ответить с цитированием
Arif flasher
[+4 14.03.09]
 
Аватар для Arif flasher

Регистрация: Mar 2009
Адрес: Баку, город ветров
Сообщений: 51
Отправить сообщение для Arif flasher с помощью ICQ Отправить сообщение для Arif flasher с помощью MSN Отправить сообщение для Arif flasher с помощью Skype™
всегда пожалуйста, рад был помочь
вот и код для муви клипа вместо компонента:

Код AS3:
var btnArray:Array = [btn1_mc,btn2_mc,btn3_mc];
var loaded:Boolean = false;
 
for (var i:uint = 0; i<btnArray.length; i++)
{
	btnArray[i].addEventListener(MouseEvent.CLICK, loadAnimation);
	btnArray[i].buttonMode = true;
	btnArray[i].targetAnimation = "animation" + (i+1) + ".swf";
}
 
function loadAnimation(event:MouseEvent):void
{
	if (loaded)
	{
		ekran_mc.removeChildAt(1);
	}
 
	var req:URLRequest = new URLRequest(event.target.targetAnimation);
	var loader:Loader = new Loader();
 
	function fileLoaded(event:Event):void
	{
		percent_txt.visible = false;
		ekran_mc.addChild(loader);
		loaded = true;
	}
 
	function preload(event:ProgressEvent):void
	{
		percent_txt.visible = true;
		var percent:Number = Math.round(event.bytesLoaded / event.bytesTotal * 100);
		percent_txt.text = String(percent) + "%";
	}
 
	loader.contentLoaderInfo.addEventListener(Event.COMPLETE, fileLoaded);
	loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, preload);
	loader.load(req);
}
__________________
Учусь флэшу с 01.01.2009
Status: Beginner

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

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

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


 


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


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