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

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

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

Регистрация: Aug 2011
Сообщений: 100
По умолчанию Работа с циклом for

Здравствуйте.
Написал анимацию, в которой текст лежит в спрайте. Этому спрайту задан альфа 0. Анимация должна проходить циклом по спрайту и поочеердно выводить его ребенка, задавая ему альфа1.
Проблема в том, что у меня выводятся сразу все текстовое поле, вместо того, чтоб выводить поочереди каждую букву. Подскажите пожалуйста, что я сделал не так?
Код AS3:
		private function addText():void
		{
			mainSprite.x = 200;
			mainSprite.y = 150;
			mainSprite.mouseChildren = false;
			addChild(mainSprite);
 
			OverwriteManager.init(OverwriteManager.AUTO);
 
			txtFrt = new TextFormat();
			txtFrt.font = "Arial";
			txtFrt.bold = true;
			txtFrt.size = 20;
 
			txtFrtColor = new TextFormat();
			txtFrtColor.font = "Arial";
			txtFrtColor.bold = true;
			txtFrtColor.size = 20;
			txtFrtColor.color = 0x00FF00;			
 
			txt1 = new TextField();
			txt1.x = 0;
			txt1.y = 0;
			txt1.width = 300;			
			txt1.text = message1;			
			txt1.setTextFormat(txtFrt);					
 
			while(mainSprite.numChildren > 0)
			{
				mainSprite.removeChildAt(0);
			}	
 
			for(var i:int = 0; i <= txt1.text.length - 1; i ++)
			{
				var txtFld:TextField = new TextField();
				txtFld.defaultTextFormat = txtFrt;
 
				txtFld.text = txt1.text.charAt(i);				
 
				var charPosition:Rectangle = txt1.getCharBoundaries(i);
				s = new Sprite();
				s.x = charPosition.x;
				s.y = charPosition.y;			
				s.alpha = 0;
				s.addChild(txtFld);
 
				mainSprite.addChild(s);													
			}
 
			animationText();						
		}
 
		private function animationText():void
		{
			var nc:Number = mainSprite.numChildren;						
 
			for(var i:int = 0; i < nc; ++ i)
			{
				TweenMax.to(mainSprite.getChildAt(i), 2, {autoAlpha:1});								
			}
		}

Старый 25.09.2011, 16:38
3p.station вне форума Посмотреть профиль Отправить личное сообщение для 3p.station Найти все сообщения от 3p.station
  № 2  
Ответить с цитированием
3p.station
 
Аватар для 3p.station

блогер
Регистрация: Oct 2009
Адрес: кочевник. Киев
Сообщений: 453
Записей в блоге: 5
давайте разберемся что у вас написано. функция animationText
я не припомню что такое autoAlpha... может стоит просто использовать alpha ?
но предпологаю тут другое
сам цикл пробегает и практически одновременно запускает твинны, тоесть все ваши чайлды одновременно начинают проявлятся, не последовательно.
для того чтобы сделать последовательное появление букв используй например TimelineLite из тойже библиотеки.
Код AS3:
var timeLine:TimelineLite = new TimelineLite();
for(var i:int = 0; i < nc; ++ i)
			{
                                timeLine.append(new TweenLite(mainSprite.getChildAt(i), 2, {alpha:1}));						
			}
примерно так
__________________
мира и гармонии

Старый 25.09.2011, 16:57
Isaac вне форума Посмотреть профиль Отправить личное сообщение для Isaac Найти все сообщения от Isaac
  № 3  
Ответить с цитированием
Isaac

Регистрация: Aug 2011
Сообщений: 100
Цитата:
Сообщение от 3p.station Посмотреть сообщение
давайте разберемся что у вас написано. функция animationText
я не припомню что такое autoAlpha... может стоит просто использовать alpha ?
но предпологаю тут другое
сам цикл пробегает и практически одновременно запускает твинны, тоесть все ваши чайлды одновременно начинают проявлятся, не последовательно.
для того чтобы сделать последовательное появление букв используй например TimelineLite из тойже библиотеки.
Код AS3:
var timeLine:TimelineLite = new TimelineLite();
for(var i:int = 0; i < nc; ++ i)
			{
                                timeLine.append(new TweenLite(mainSprite.getChildAt(i), 2, {alpha:1}));						
			}
примерно так
Сделал, как вы и сказали, а мне выдало ошибку
Код AS3:
Main.as, строка 96	1120: Обращение несуществующего свойства timeLine.

Старый 25.09.2011, 19:22
3p.station вне форума Посмотреть профиль Отправить личное сообщение для 3p.station Найти все сообщения от 3p.station
  № 4  
Ответить с цитированием
3p.station
 
Аватар для 3p.station

блогер
Регистрация: Oct 2009
Адрес: кочевник. Киев
Сообщений: 453
Записей в блоге: 5
эм
я русский такой плохо понимать, юзаю английский ИДЕ.
а какая версия greensock используется ? проверте есть ли метод append у timeLine...
__________________
мира и гармонии

Старый 25.09.2011, 19:32
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 5  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Да, append пререгатива Max`а.

Старый 25.09.2011, 20:19
3p.station вне форума Посмотреть профиль Отправить личное сообщение для 3p.station Найти все сообщения от 3p.station
  № 6  
Ответить с цитированием
3p.station
 
Аватар для 3p.station

блогер
Регистрация: Oct 2009
Адрес: кочевник. Киев
Сообщений: 453
Записей в блоге: 5
Цитата:
TimelineLite is a lightweight, intuitive timeline class for building and managing sequences of TweenLite, TweenMax, TimelineLite, and/or TimelineMax instances. You can think of a TimelineLite instance like a virtual MovieClip timeline or a container where you place tweens (or other timelines) over the course of time. You can:
build sequences easily by adding tweens with the append(), prepend(), insert(), appendMultiple(), prependMultiple(), and insertMultiple() methods. Tweens can overlap as much as you want and you have complete control over where they get placed on the timeline.
та вроде есть, та и я вот смотрю в проекте - у меня работает...
__________________
мира и гармонии

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

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
А, речь про TimelineLite. Я о TweenLite думал )

Старый 25.09.2011, 21:07
3p.station вне форума Посмотреть профиль Отправить личное сообщение для 3p.station Найти все сообщения от 3p.station
  № 8  
Ответить с цитированием
3p.station
 
Аватар для 3p.station

блогер
Регистрация: Oct 2009
Адрес: кочевник. Киев
Сообщений: 453
Записей в блоге: 5
топикстартер возможно тоже не заметил...
__________________
мира и гармонии

Старый 25.09.2011, 22:10
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 9  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
есть такой замечательное св-во delay которое задает задержку перед выполнением анимации:
Цитата:
delay : Number – Number of seconds (or frames if useFrames is true) that should elapse before the tween begins.
Код AS3:
TweenLite.to(mc, 1, { alpha : 1, delay : i * 0.5 });

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

Теги
alpha , numChildren , цикл for

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

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


 


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


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