GeoMover - JavaScript-QuelltextQuelltext von geomover.js |
geomover1.html geomover2.html geomover3a.html geomover3.html |
Dies ist die Auflistung der Datei geomover.js,
die die Funktionalität für die Fenstergeometrieausrichtung bereitstellt.
Im folgenden Quelltext sind Prozedurdeklarationen rot und Kommentare grün markiert. |
geomover1.html geomover2.html geomover3a.html geomover3.html |
/* Geomover * (c) 2002 Ulrich Kritzner * Die Verwendung dieses Scripts in kommerziellen Seiten ist kostenpflichtig */ /* Warnung: * Nicht alle Browser unterstuetzen die gleichzeitige Ausfuehrung mehrerer Timeouts. * Daher muss beim gleichzeitigen Einsatz mehrerer Geomover * oder der Kombination mit anderen Droeppez-Animationen * die Datei "timer.js" im HTML-Dokument geladen werden. * * Erklaerung der "unverstaendlichen" Quelltextabschnitte: * wird "timer.js" _nicht_ eingebunden (if (!(this.usetimer))), * kuemmert sich Geomover selbst um seine timeouts, * wird "timer.js" eingebunden (if (this.usetimer)), * laesst Geomover seine timeouts vom timer managen * Die Funktionen des timers sind in der extra Datei "timer.js" definiert! */ var GeoMovers=new Array(); function GM_TimerFunc() { var tx,ty,rx,ry,elapse=this.pelapse,xsize,ysize,xscroll,yscroll; xsize=this.parentobject.clientWidth; ysize=this.parentobject.clientHeight; xscroll=this.parentobject.scrollLeft; yscroll=this.parentobject.scrollTop; if (this.relx>=0) tx=this.relx*(xsize-this.width)+this.absx+xscroll; else tx=this.absx; if (this.rely>=0) ty=this.rely*(ysize-this.height)+this.absy+yscroll; else ty=this.absy; rx=tx-this.x; ry=ty-this.y; if ((rx!=0)||(ry!=0)) { if ((this.initial==0)&&(this.rstep>0)) { if (rx>this.rstep) rx=this.rstep; if (rx<-this.rstep) rx=-this.rstep; if (ry>this.rstep) ry=this.rstep; if (ry<-this.rstep) ry=-this.rstep; } this.initial=0; this.x+=rx; this.y+=ry; if (this.x>xsize+xscroll) this.x=xsize+xscroll; if (this.y>ysize+yscroll) this.y=ysize+yscroll; if (this.x<xscroll-this.width) this.x=xscroll-this.width; if (this.y<yscroll-this.height) this.y=yscroll-this.height; this.moveobject.style.left=this.x; this.moveobject.style.top=this.y; elapse=this.aelapse; } if (this.usetimer) /* wenn timer.js geladen ist: */ { this.timestep=Math.round(elapse/u_timer_elapse); if (this.timestep<1) this.timestep=1; } else /* wenn timer.js _nicht_ geladen ist: */ this.timeout=window.setTimeout("GeoMovers["+this.number+"].TimerFunc()",elapse); } function GM_Run() { if (this.usetimer) /* wenn timer.js geladen ist: */ { this.timestep=1; if (u_timer_elapse>0) u_timer_continue(); } else /* wenn timer.js _nicht_ geladen ist: */ { if (this.timeout!=0) window.clearTimeout(this.timeout); this.timeout=0; this.TimerFunc(); } } function GM_SetPos(relx,rely,absx,absy,rstep) { this.relx=relx; this.rely=rely; this.absx=absx; this.absy=absy; this.rstep=rstep; } function GeoMover(aelapse,pelapse,movobj,relx,rely,absx,absy,rstep,parobj) { if (typeof(parobj)=="string") this.parentobject=document.getElementById(parobj); else { if (typeof(parobj)=="object") this.parentobject=parobj; else this.parentobject=window.document.body; } if (typeof(movobj)=="string") this.moveobject=document.getElementById(movobj); else { if (typeof(movobj)=="object") this.moveobject=movobj; else return; } this.number=GeoMovers.length; GeoMovers[this.number]=this; this.TimerFunc=GM_TimerFunc; this.Run=GM_Run; this.SetPos=GM_SetPos; this.aelapse=aelapse; this.pelapse=pelapse; this.relx=relx; this.rely=rely; this.absx=absx; this.absy=absy; this.rstep=rstep; this.x=0; this.y=0; this.initial=1; this.width=this.moveobject.offsetWidth; this.height=this.moveobject.offsetHeight; if (typeof(u_timer_add_object)=="function") /* wenn timer.js geladen ist: */ { this.usetimer=1; this.timestep=0; this.timeval=0; u_timer_add_object(this); } else /* wenn timer.js _nicht_ geladen ist: */ { this.usetimer=0; this.timeout=0; } } |
geomover1.html geomover2.html geomover3a.html geomover3.html |
Autor: Ulrich Kritzner |