Benutzung von picwave.js
Wave ist eine Objektklasse, mit der man eine Bildsequenz wellenförmig durch eine Reihe von Bildern auf einer HTML-Seite bewegen kann.

Die Einbindung von timer.js in das HTML-Dokument ist zwingend notwendig.

Funktionen von Wave-Objekten
Objekt erzeugen
new Wave(start,count,step,time_step) kreiert ein neues Wave-Objekt und meldet es beim Timer an
start: Index des ersten zu manipulierenden Bildes auf der Seite
count: Anzahl der zu manipulierenden Bilder
step: Schrittweite der zu manipulierenden Bilder
time_step:
      0: inaktiv
      1: jeden Timer-Tick nutzen
      2: jeden zweiten Timer-Tick nutzen
      3: jeden dritten Timer-Tick nutzen
      #: jeden #-ten Timer-Tick nutzen
FunktionBedeutung
Step() Rückt die Bildsequenz einen Schritt weiter
Stop() Stoppt die Animation
Run(direction) Startet die Animation
direction:
      0: zyklisch vorwärts
      1: zyklisch rückwärts
      2: abwechselnd vor und zurück
      3: abwechselnd zurück und vor
      4: vorwärts bis zum Ende
      5: rückwärts bis zum Anfang
TimeStep(time_step) legt die Timer-Schrittweite fest
      0: inaktiv
      1: jeden Timer-Tick nutzen
      2: jeden zweiten Timer-Tick nutzen
      3: jeden dritten Timer-Tick nutzen
      #: jeden #-ten Timer-Tick nutzen
Clear() Re-Initialisiert alle Bilder
Right() positioniert die Welle an das Ende
Left() positioniert die Welle an den Anfang
SetEventHandler(eventhandler) Setzt die Funktion, die bei Start oder Stop des Vorganges aufgerufen werden soll
Bei Start bekommt die Eventhandler-Funktion dann die Zahl 1, bei Stop 0 übergeben.
AddPicture(picture) Fügt ein Einzelbild in die Bilderkette an
picture: Image-Objekt


Quelltext von picwave.js
/* (c) 2001 Ulrich Kritzner */

function Wave_Step()
{
  if (this.timestep==0)
    this.TimerFunc();
}

function Wave_TimerFunc()
{
  var i;
  with (this)
  {
    for (i=piccount-1;i>0;i--)
      current[i]=current[i-1];
    switch (direction)
    {
      case 0:
        position=(position+1)%count;
	break;
      case 1:
        position=(position+count-1)%count;
	break;
      case 2:
        if (position<count-1)
          position++;
	else
	  direction=3;
	break;
      case 3:
        if (position>0)
          position--;
	else
	  direction=2;
	break;
      case 4:
        if (position<count-1)
          position++;
	else if (current[piccount-1]==count-1)
	  Stop();
	break;
      case 5:
        if (position>0)
          position--;
	else if (current[piccount-1]==0)
	  Stop();
	break;
    }
    current[0]=position*step;
    for (i=piccount-1;i>=0;i--)
      window.document.images[start+current[i]].src=pic[i].src;
  }
}

function Wave_Stop()
{
  var oldrun=this.timestep;
  this.timestep=0;
  if ((this.EventHandler)&&(oldrun>0))
    this.EventHandler(0);
}

function Wave_Run(direction)
{
  this.Stop();
  this.direction=direction;
  if (this.EventHandler)
    this.EventHandler(1);
  this.timestep=this.time_step;
  u_timer_continue();
}

function Wave_Time_Step(time_step)
{
  this.Stop();
  this.time_step=time_step;
  if (this.EventHandler)
    this.EventHandler(1);
  this.timestep=this.time_step;
  u_timer_continue();
}

function Wave_Clear()
{
  var i;
  with (this)
  {
    for (i=0;i<piccount;i++)
      window.document.images[start+current[i]].src=pic[piccount-1].src;
  }
}

function Wave_Right()
{
  if (this.timestep>0)
    this.Clear();
  with (this)
  {
    position=count-1;
    Align();
  }
}

function Wave_Left()
{
  if (this.timestep>0)
    this.Clear();
  with (this)
  {
    position=0;
    Align();
  }
}

function Wave_Align()
{
  var i;
  for (i=0;i<this.piccount;i++)
    this.current[i]=this.position*this.step;
}

function Wave_Set_Event_Handler(eventhandler)
{
  this.EventHandler=eventhandler;
}

function Wave_Add_Picture(picture)
{
  with (this)
  {
    pic[piccount]=picture;
    current[piccount]=current[0];
    piccount++;
  }
}

function Wave(start,count,step,time_step)
{
  this.current=new Array();
  this.pic=new Array();
  this.piccount=0;
  this.start=start;
  this.count=count;
  this.time_step=time_step;
  this.direction=1;
  this.position=0;
  this.step=step;
  this.Step=Wave_Step;
  this.TimerFunc=Wave_TimerFunc;
  this.Stop=Wave_Stop;
  this.Run=Wave_Run;
  this.Right=Wave_Right;
  this.Left=Wave_Left;
  this.TimeStep=Wave_Time_Step;
  this.Clear=Wave_Clear;
  this.SetEventHandler=Wave_Set_Event_Handler;
  this.AddPicture=Wave_Add_Picture;
  this.Align=Wave_Align;
  this.timestep=0;
  this.timeval=0;
  u_timer_add_object(this);
}