/* DynAPI Distribution Fader Animation Extension The DynAPI Distribution is distributed under the terms of the GNU LGPL license. requires: DynLayer, Fader */ function TextAnimation(x,y,text,animBy,dlyr){ this.EventObject = EventObject; this.EventObject(); this._chars=[]; this._lyrPool=[]; this._text=text; this._animBy=null; this._inUse=0; this._dlyr=(dlyr||dynapi.document); this.setLocation(x,y); this.animateBy(animBy); this.visible=true; var me=this; // use delegate "me" var fn=function(){ me._created=true; me._split(); } if(this._dlyr!=dynapi.document) this._dlyr.onCreate(fn); else { var e={onload:fn}; this._dlyr.addEventListener(e); } }; var p = dynapi.setPrototype('TextAnimation','EventObject'); p._clear = function(){ var l; var p=this._lyrPool; var c=this._chars; for(var i=0;i'; lyr=c[0]=this._createCharLayer(t); lyr.setLocation(x,y); }else { // By word or letter if (this._animBy=='word') { t=t.replace(/\s/g,'   '); ar=t.split(' '); } else { ar=t.split(''); } for(i=0;i=0 && i0) l._bonctmr--; else { yv=l._boncyv; //y=l._boncy; l._boncy+=yv; if (yvh-l.h) { l._boncy=h-l.h; l._boncyv=-l._boncyv; if (l._boncmaxv>0) l._boncmaxv--; } l.setLocation(null,(this.y-h)+l._boncy+l.h); } if(l._boncmaxv!=0){ this._exec(this+'._startBounce('+i+','+h+');'+ext,1); } else if(i==(c.length-1)) { this._exec(l+'.invokeEvent("pathfinish")',1); } }; // Fade In p.fadeIn = function(inc,ms){ var i,c=this._chars; this._exec(this+'.invokeEvent("animstart")',1); for (i=0;il._zTo) l._zInc*=-1; if(!this._inUse) l.setVisible(true); this._exec(this+'._startZoom('+i+');',i); } this._inUse++; }; p._startZoom= function(i){ var l,y,c,ext; var l=this._chars[i]; var inc = l._zInc; var from = l._zFrom; var to = l._zTo; from+=inc; if ((inc<0 && from<=to)|| (inc>0 && from>=to)) from=to; l._zFrom=from; l.css.fontSize=from+'px'; l.setSize(0,0); // ?? l.setSize(l.getContentWidth(),l.getContentHeight()); if(i==0) l.setLocation(null,this.y-(l.h/2)); else l.setLocation(this._chars[i-1].x+this._chars[i-1].w,this.y-(l.h/2)); if(from!=to) l._zTmr=window.setTimeout(this+'._startZoom('+i+')',l._zMs); else if(i==(this._chars.length-1)) { this._exec(l+'.invokeEvent("pathfinish")',1); } }; // to-do: p.wave = function(){}; p.nudge = function(){}; p.quake = function(){};