PDA

Просмотр полной версии : Текстовая анимация в TweenMax


Isaac
22.09.2011, 15:10
Здравствуйте.
Подскажите пожалуйста.
Есть текстовая анимация, в которой текст появляется слева направо и через несколько секунд буквы разлетаются начиная с последнего символа.
Вопрос заключается в следующем:
- Пожалуйста подскажите, что мне нужно изменить в коде, чтоб буквы разлетались начиная с первого символа?

Вот код
import flash.geom.Rectangle;
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.utils.Timer;
import flash.events.TimerEvent;

import com.greensock.TweenLite;
import com.greensock.easing.Circ;
import com.greensock.OverwriteManager;
import com.greensock.plugins.TweenPlugin;
import com.greensock.plugins.BlurFilterPlugin;

TweenPlugin.activate([BlurFilterPlugin]);


// properties
var titleTime:Number = 12; // total time to display each string be sure to allow enough time for wind to finish

var tfX:Number = 30; // x position of tf on stage
var tfY:Number = 100; // y position of tf on stage
var holdDuration:Number = 5; // time between fade in and wind
var fadeDuration:Number = 2; // fade rate
var fadeDelay:Number = 0.03; // per letter delay to fade... set to 0 to fade all at once
var windDuration:Number = 1.2; // duration of wind effect
var windDelay:Number = 0.1; // per letter delay for wind effect


// strings - define your text here (sorry no htmltext)
var strings:Array = new Array();

strings[0] = 'vulputate, massa magna interdum nisi,';
strings[1] = 'celementum in rhoncus commodo, faucibus ac risus. Maecenas viv';
strings[2] = 'Proin sit amet placerat metus. Ut tempus malesuada erat et facilisis.';

var tsprite:Sprite = new Sprite();
tsprite.x = tfX;
tsprite.y = tfY;
tsprite.mouseChildren = false;

this.addChild(tsprite);

srctxt.visible = false;

OverwriteManager.init(OverwriteManager.AUTO);

// do the first one... rest are handled by the timer
srctxt.text = strings[0];
generateTF();

var timer:Timer = new Timer(titleTime*1000,strings.length-1);
timer.addEventListener(TimerEvent.TIMER,updater);
timer.start();

function updater(event:TimerEvent):void {

srctxt.text = strings[timer.currentCount];
generateTF();
}


function generateTF():void {

while(tsprite.numChildren > 0) {
tsprite.removeChildAt(0)
}

var tfl:Number = srctxt.length;

for(var i:int = 0; i < tfl-1; ++i) {

var atf:TextField = new TextField();
var c:Sprite = new Sprite();

atf.embedFonts = true;
atf.selectable = false;

atf.text = srctxt.text.charAt(i);
atf.setTextFormat(srctxt.getTextFormat());

var charPosition:Rectangle = srctxt.getCharBoundaries(i);
c.x = charPosition.x;
c.y = charPosition.y;

c.alpha = 0;

c.addChild(atf);
tsprite.addChild(c);
}

animateTF();
}

function animateTF():void {

var nc:Number = tsprite.numChildren;
var fdelay:Number = 0;
var wdelay:Number = 0;

for (var i:int = 0; i < nc ; ++i) {

TweenLite.to(tsprite.getChildAt(i),fadeDuration,{alpha: 1, delay:fdelay});
fdelay += fadeDelay;
TweenLite.to(tsprite.getChildAt((nc-1)-i),windDuration,{
alpha: 0,
rotation: (Math.random() * 100) - 50,
y: -100,
x: Math.random() * stage.stageWidth,
blurFilter:{blurX: 4, blurY: 4},
ease:Circ.easeIn,
delay:holdDuration + wdelay
});
wdelay += windDelay;
}
}

Я так подозреваю, что всего лишь нужно изменить вот эту строчку
TweenLite.to(tsprite.getChildAt((nc-1)-i),windDuration,{
но какие именно изменения нужно внести не понимаю :(

dimarik
22.09.2011, 22:41
http://www.flasher.ru/forum/showthread.php?p=999853

Пост 2 и 5.

Isaac
23.09.2011, 18:18
http://www.flasher.ru/forum/showthread.php?p=999853

Пост 2 и 5.

Спасибо!