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
2 years ago
|
/*
|
||
|
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();
|
||
|
};
|