You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.1 KiB
89 lines
2.1 KiB
/* |
|
DynAPI Distribution |
|
Marquee Component by Raymond Irving (http://dyntools.shorturl.com) |
|
|
|
The DynAPI Distribution is distributed under the terms of the GNU LGPL license. |
|
|
|
Requires: StyleManager, MarqueeStyle (Optional) |
|
*/ |
|
|
|
function Marquee(html,x,y,w,h,style) { |
|
this.DynLayer=DynLayer; |
|
this.DynLayer(null,x,y,w,h); |
|
|
|
this._cvhtml=(html)? html:Styles.createPixel(1,1); |
|
var canvas=this.addChild(new DynLayer(null,-1000,-1000),'lyrCanvas'); |
|
canvas.addEventListener(Marquee.PathEvents); |
|
this._inc=5; |
|
this._delay=120; |
|
this._dir='left'; |
|
this._behave='slide'; |
|
this._action='stop'; |
|
this._loop=true; |
|
|
|
this.onCreate(Marquee.CreateEvent); |
|
this.setStyle(style||'Marquee'); |
|
}; |
|
|
|
/* Prototype */ |
|
var p=dynapi.setPrototype('Marquee','DynLayer'); |
|
// Private |
|
p._animate=function(){ |
|
if(this._action=='stop') return; |
|
var ex=0,sx=0,sy=0,ey=0; |
|
var c=this.lyrCanvas; |
|
if(this._behave=='slide'){ |
|
if(this._dir=='top') {sy=this.h; ey=0-c.h;} |
|
else if(this._dir=='bottom') {sy=0-c.h; ey=this.h;} |
|
else if(this._dir=='right') {sx=0-c.w; ex=this.w;} |
|
else {sx=this.w; ex=0-c.w} |
|
}else if(this._behave=='scroll'){ |
|
if(this._dir=='top') {sy=this.h; ey=0;} |
|
else if(this._dir=='bottom') {sy=0-c.h; ey=this.h-c.h;} |
|
else if(this._dir=='right') {sx=0-c.w; ex=this.w-c.w;} |
|
else {sx=this.w; ex=0} |
|
} |
|
c.setLocation(sx,sy); |
|
c.slideTo(ex,ey,this._inc,this._delay); |
|
}; |
|
|
|
// Public |
|
p.setDirection = function(t) { |
|
//top,bottom,left,right |
|
this._dir=t; |
|
}; |
|
p.setHTML = function(h){ |
|
this.html = h; |
|
this.renderStyle('html'); |
|
}; |
|
p.setSpeed = function(delay,inc){ |
|
this._delay=parseInt(delay); |
|
this._inc=parseInt(inc); |
|
}; |
|
p.setBehavior = function(t){ |
|
// slide,scroll |
|
this._behave=t; |
|
}; |
|
p.setRepeat = function(b){ |
|
this._loop=b; |
|
}; |
|
p.start = function(){ |
|
this._action='start'; |
|
if(this._created) this._animate(); |
|
}; |
|
p.stop = function(){ |
|
this._action='stop'; |
|
}; |
|
|
|
/* Events */ |
|
Marquee.PathEvents = { |
|
onpathfinish : function(e) { |
|
var canvas=e.getSource() |
|
var o=canvas.parent; |
|
if(o._loop && o._behave!='scroll') o._animate(); |
|
else o.stop(); |
|
} |
|
}; |
|
Marquee.CreateEvent = function(){ |
|
this.start(); |
|
}; |