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

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

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

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

Здравсвуйте
Подскажите пожалуйста.
В конструкторе есть ф-я, которая вызвает 3 другие ф-ии для анимации.
Нужно, чтоб по окончании этих анимаций снова вызывался контруктор и повторялись предыдущии анимации. И так конструктор должен вызываться 3 раза, соответственно анимациия должна играть трижды.
Подскажите пожалуйста, как подобное можгно реализовать с помощью Твинмакса или Твинлайта(ужен ли он, если знаете другой способ, то я не против).
Я так понял, что мне нужно "прибивать" все предыдущии действия, перед вызовом конструктора, чтоб анимация не накладывалась друг на друга?
Вот мой код
Код AS3:
public function Main()
{
   inicialize();			
}
 
private function inicialize():void
{
    addSimbols();
    rotationArrow();						
    setMove();				
    addMask();
}

Старый 02.09.2011, 15:36
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 2  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
1 - initialize (init)
2 - содержательный код
3 - сами анимации у вас каким методом происходят? Они все 3 одновременно идут или как ? Если последовательно то нечего сложного , если параллельно то тоже - главное определить каким событием вы понимаете ,что анимация закончилась
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

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

Регистрация: Aug 2011
Сообщений: 100
Цитата:
Сообщение от Genzo Посмотреть сообщение
1 - initialize (init)
2 - содержательный код
3 - сами анимации у вас каким методом происходят? Они все 3 одновременно идут или как ? Если последовательно то нечего сложного , если параллельно то тоже - главное определить каким событием вы понимаете ,что анимация закончилась
Анимации происходит rotationArrow(); setMove();, а метод addSimbols(); - добавляет все символы на сцену.
Анимации проходят : некоторые параллельно с другими, а некоторые последовательно.

Добавлено через 3 минуты
Можно в конструкторе написать так?
Код AS3:
TweenLite.to(this, 0,{delay: 0, onComplete:inicialize});

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

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
rotationArrow(); - это не анимация , а вызов функции , сама анимация каким методом реализована?
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

Старый 02.09.2011, 15:48
Isaac вне форума Посмотреть профиль Отправить личное сообщение для Isaac Найти все сообщения от Isaac
  № 5  
Ответить с цитированием
Isaac

Регистрация: Aug 2011
Сообщений: 100
Цитата:
Сообщение от Genzo Посмотреть сообщение
rotationArrow(); - это не анимация , а вызов функции , сама анимация каким методом реализована?
private function rotationArrow():void
{
TweenMax.to(arrow1, 1, {shortRotation:{rotation:-350}, onComplete:arrowUp});
TweenMax.to(arrow2, 2, {shortRotation:{rotation:340}, onComplete:arrowUp});
}

Старый 02.09.2011, 15:55
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 6  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
в классе создайте переменную animationCount , например. и в в onComplete: каждой анимации +1 ей добавляйте , потом там же проверяйте
Код AS3:
if(this.animationCount  >= 3) {inicialize();}
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

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

Регистрация: Aug 2011
Сообщений: 100
Цитата:
Сообщение от Genzo Посмотреть сообщение
в классе создайте переменную animationCount , например. и в в onComplete: каждой анимации +1 ей добавляйте , потом там же проверяйте
Код AS3:
if(this.animationCount  >= 3) {inicialize();}
НИчего, как было, так и осталось...

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

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
Тогда даже не знаю ,что сказать . полный код в студию.
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

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

Регистрация: Aug 2011
Сообщений: 100
Кто-нибудь может мне помочь?!

Добавлено через 1 минуту
Цитата:
Сообщение от Genzo Посмотреть сообщение
Тогда даже не знаю ,что сказать . полный код в студию.
Код AS3:
package
{
 
	public class Main extends MovieClip
	{		
		private var bg:MovieClip;
		private var ts:MovieClip;
		private var panel:MovieClip;
		private var logo:MovieClip;
		private var btn1:MovieClip;		
		private var btn2:MovieClip;
		private var mask_mc4:MovieClip;
		private var mirrorMask:MovieClip;
		private var mirrorMask2:MovieClip;
		private var mirrorMask3:MovieClip;
		private var arrow1:MovieClip;
		private var arrow2:MovieClip;	
 
		private var speed:Number = 3;			
		private var liveTimer:Timer = new Timer(500);
 
		// PUBLIC //
		public var txtFrt:TextFormat;
		public var txtFrtBold:TextFormat;
		public var txt1:TextField;		
		public var charTimerTarget:TextField;
 
		public var charTimer:Timer;
		public var mainCharTimer:Timer;
 
		public var charTimerTargetSource:String;		
 
		public var charTimerTargetData:Array;
 
		public var frameTime:Number;
		public var textSpeed:Number = 500;
		public var charTimerTargetCount:int;		
		public var messageCount:int = 0;		
 
		public function Main()
		{		
			inicialize();						
		}	
 
		private function inicialize():void
		{			
			addSimbols();
			rotationArrow();						
			setMove();				
			addMask();
 
			stage.scaleMode = "noScale";
		}
 
		private function addSimbols():void
		{			
 
			bg = new Bg_mc();
			bg.x = bg.y = 0;
			addChild(bg);			
 
			panel = new Panel_mc();
			panel.x = 0;
			panel.y = -155.65;
			addChild(panel);
 
			logo = new Logo_mc();
			logo.x = 626;
			logo.y = 11;
 
			btn1 = new Btn1_mc();
			btn1.x = 678;
			btn1.y = 72;							
			btn1.width = 120;
			btn1.height = 48;
 
			btn2 = new Btn2_m();
			btn2.x = 678;
			btn2.y = 72;							
			btn2.width = 120;
			btn2.height = 48;
 
			arrow1 = new Arrow1_mc();
			arrow1.x = 385;
			arrow1.y = 66;
			arrow1.rotation = 350;
			addChild(arrow1);	
 
			arrow2 = new Arrow2_mc();
			arrow2.x = 200;
			arrow2.y = 80;
			arrow2.rotation = 320;			
			addChild(arrow2);	
 
			ts = new Ts_mc();
			ts.x = ts.y = 0;
			addChild(ts);				
 
			var t:MovieClip = new TSO();
			t.x = 0;
			t.y = 19;
			addChild(t);		
		}		
 
		private function rotationArrow():void
		{
			TweenMax.to(arrow1, 1, {shortRotation:{rotation:-350}, onComplete:arrowUp});
			TweenMax.to(arrow2, 2, {shortRotation:{rotation:340}, onComplete:arrowUp});
		}
		private function arrowUp():void
		{
			TweenMax.to(arrow1, .04, {shortRotation:{rotation:-351}, onComplete:arrowDown});
			TweenMax.to(arrow2, .09, {shortRotation:{rotation:339}, onComplete:arrowDown});
		}
		private function arrowDown():void
		{			
			TweenMax.to(arrow1, .04, {shortRotation:{rotation:-350}, onComplete:arrowUp});
			TweenMax.to(arrow2, .09, {shortRotation:{rotation:340}, onComplete:arrowUp});
		}		
 
		private function setMove():void
		{
			/* Step 1 */
			TweenLite.to(panel, speed, {x:-10, y:90, scaleX:0.5, scaleY:0.5, ease:Cubic.easeOut, delay: 2});
			TweenLite.to(arrow1, speed, {x:180, y:170, scaleX:0.5, scaleY:0.5, ease:Cubic.easeOut, delay: 2});
			TweenLite.to(arrow2, speed, {x:60, y:170, scaleX:0.5, scaleY:0.5, ease:Cubic.easeOut, delay: 2});			
 
			/* Step 2 */
			car = new Car_mc();
			car.x = 700;
			car.y = -200;
			addChild(car);
 
			mirrorMask = new MirrorMask();
			mirrorMask.x = 700;
			mirrorMask.y = -200;
			car.mask = mirrorMask;
			addChild(mirrorMask);
 
			mask_mc4 = new Mask_mc();
			mask_mc4.x = 0;
			mask_mc4.y = 0;
			(root as Sprite).mask = mask_mc4;
			addChild(mask_mc4);			
 
			blue = new Blue_mc();
			blue.x = 555;
			blue.y = -80;
			blue.width = 300;
			addChild(blue);
 
			mirrorMask2 = new MirrorMask();
			mirrorMask2.x = 475;
			mirrorMask2.y = -30;
			//blue.mask = mirrorMask2;			
 
			red = new Red_mc();
			red.x = 720;
			red.y = -200;
			addChild(red);
 
			mirrorMask3 = new MirrorMask();
			mirrorMask3.x = 475;
			mirrorMask3.y = -30;
			//red.mask = mirrorMask3;			
 
			mirror = new Mirror_mc();
			mirror.x = 700;
			mirror.y = -200;
			addChild(mirror);											
 
			addChild(btn1);
			addChild(logo);			
 
			TweenLite.to(mirror, speed, {x:450, y:-110, ease:Cubic.easeOut, delay: 1.5});			
			TweenLite.to(mirrorMask, speed, {x:470, y:-62, ease:Cubic.easeOut, delay: 1.5});			
			TweenLite.to(car, speed, {x:400, y:-110, ease:Cubic.easeOut, delay: 1.5});	
			TweenLite.to(blue, speed, {x: 570, y:-15, ease:Cubic.easeOut, delay:4});			
			TweenLite.to(red, speed, {y:-25, ease:Cubic.easeOut, delay:2.5});
 
			deleteLite();
 
			TweenLite.to(panel, 3, {y:90, ease:Cubic.easeOut, delay: 3});	
			TweenLite.to(mirror, speed, {y:-80, ease:Cubic.easeOut, delay: 3});	
			TweenLite.to(mirrorMask, speed, {y:-32, ease:Cubic.easeOut, delay: 3});	
			TweenLite.to(car, speed, {x: 340, y:-80, ease:Cubic.easeOut, delay: 3});
 
			TweenLite.to(this, 0,{delay: 4.5, onComplete:addText1});
			TweenLite.to(mirror, speed, {y:-65, ease:Cubic.easeOut, delay: 4});	
			TweenLite.to(mirrorMask, speed, {x: 473, y:-20, ease:Cubic.easeOut, delay: 4});				
		}	
 
		// FUNCTION //
 
		private function addText():void
		{
			txtFrt = new TextFormat()
			txtFrt.font = "Arial";
			txtFrt.size = 17;
			txtFrt.color = 0xFFFFFF;
 
			txtFrtBold = new TextFormat();
			txtFrtBold.font = "Arial";
			txtFrtBold.size = 20;
			txtFrtBold.bold = true;
			txtFrtBold.color = 0xFFFFFF;
 
 
			txt1 = new TextField();
			txt1.width = 400;
			txt1.height = 90;
 
			txt1.x = 200;
			txt1.y = 28;						
			txt1.defaultTextFormat = txtFrt;
			addChild(txt1);						
		}
 
		private function effText():void
		{
			frameTime = Math.round(textSpeed * 1 / this.stage.frameRate)*3;
			charTimer = new Timer(frameTime);
 
			charTimer.addEventListener(TimerEvent.TIMER, charTimerComplete);
			charTimer.start();
 
			charTimerTarget = txt1;
			charTimerTargetSource = 'Bad decisions\ncatching up with you?';
			charTimerTargetData = charTimerTargetSource.split('');
			charTimerTargetCount = 0;			
 
			liveTimer.addEventListener(TimerEvent.TIMER, liveTimerEnd);
		}		
 
 
		private function charTimerComplete(event:TimerEvent):void
		{			
			if (charTimerTargetCount < charTimerTargetData.length)
			{
				charTimerTarget.appendText(charTimerTargetData[charTimerTargetCount]);
 
				switch(messageCount)
				{
					case 1:
					{
						if ((txt1.text.length - 1) > 29)
						{
							txt1.setTextFormat(txtFrtBold, 29, 30);
						}
 
						if ((txt1.text.length - 1) > 53)
						{
							txt1.setTextFormat(txtFrtBold, 53, txt1.text.length - 1);
						}
					} break;
 
					case 3:
					{
						if ((txt1.text.length - 1) > 0)
						{
 
						}
 
						if ((txt1.text.length - 1) > 40)
						{
							txt1.setTextFormat(txtFrtBold, 40, txt1.text.length - 1);							
						}
					} break;
				}
 
				charTimerTargetCount ++;
			}else
			 {
				 liveTimer.start();
			 }			 
		}
 
		private function liveTimerEnd(event:TimerEvent):void{
			liveTimer.stop();
 
			switch(messageCount)
				 {
					 case 0:
					 {
						 txt1.text = '';							 
						 charTimerTargetSource = ' Improve your driving skills\n with traffic school... Online!';	
						 charTimerTargetData = charTimerTargetSource.split('');
						 charTimerTargetCount = 0;						 
					 } break;
 
					 case 1:
					 {
						 txt1.text = '';
 
						 charTimerTargetSource = 'Clear your record at\nyour own convenience.';
						 charTimerTargetData = charTimerTargetSource.split('');
						 charTimerTargetCount = 0;						 
					 } break;
 
					 case 2:
					 {
						 txt1.text = '';
						 txt1.y = 10;
						 charTimerTargetSource = "Start your court-approved\ntraffic school\nbefore its too late!";
						 charTimerTargetData = charTimerTargetSource.split('');
						 charTimerTargetCount = 0;
					 } break;
 
					 case 3:
					 {
						 charTimer.stop();
 
						 removeEventListener(TimerEvent.TIMER, liveTimerEnd);
						 removeEventListener(TimerEvent.TIMER, charTimerComplete);						 
 
					 } break;
				 }
 
				 messageCount ++;
		}			
 
		// FUNCTION //
 
		private function addText1():void
		{		
			addText();
			effText();
		}		
 
 
		private function addLite():void
		{			
			TweenLite.to(blue, .5, {autoAlpha:1, onComplete:deleteLite});
			TweenLite.to(red, .5, {autoAlpha:0, onComplete:deleteLite});			
		}
 
		private function deleteLite():void
		{						
			TweenLite.to(blue, .5, {autoAlpha:0, ease:Circ.easeOut, onComplete:addLite});
			TweenLite.to(red, .5, {autoAlpha:1, ease:Circ.easeOut, onComplete:addLite});
		}
 
		private function addMask():void
		{
			var shape:Sprite = new Sprite();
			var gr:Graphics = shape.graphics;
 
			gr.beginFill(0xFFFFFF, 0);
			gr.drawRect(0, 0, 728, 90);
			gr.endFill();
 
			shape.x = 0;
			shape.y = 0;
			addChild(shape);												
 
			shape.addEventListener(MouseEvent.MOUSE_OVER, _over, false, 0, true);
			shape.addEventListener(MouseEvent.MOUSE_OUT, _out, false, 0, true);
			btn2.addEventListener(MouseEvent.MOUSE_OVER, _over, false, 0, true);
			btn2.addEventListener(MouseEvent.MOUSE_OUT, _out, false, 0, true);			
		}
 
		private function _over(event:MouseEvent):void
		{
			buttonMode = true;
			removeChild(btn1);
			addChild(btn2);
 
		}
		private function _out(event:MouseEvent):void
		{
			buttonMode = false;
			removeChild(btn2);
			addChild(btn1);
		}		
 
 
	} // end Class	
} // end Package


Последний раз редактировалось Isaac; 02.09.2011 в 17:25.
Старый 02.09.2011, 17:21
Isaac вне форума Посмотреть профиль Отправить личное сообщение для Isaac Найти все сообщения от Isaac
  № 10  
Ответить с цитированием
Isaac

Регистрация: Aug 2011
Сообщений: 100
Упустил объявление некоторых переменных, так как код слишком большой и не вмещался, но они не важны в данном случае


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

Теги
TweenLite , tweenMax

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

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


 


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


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