The SineWave Object will slide the layer along a sine wave path.
Initialization:
objectName.sinewave = new SineWave(objectName,"sinewave")
Example:
mylayer = new DynLayer("mylayerDiv")
mylayer.sinewave = new SineWave(mylayer,"sinewave")
The play() Method:
The play() method begins the sine wave:
objectName.sinewave.play(amplitude,wavelength,angleinc,angle,cycles,direction,speed,fn)
Examples:
mylayer.sinewave.play(60,200,15,0,2,1,20)
The pause() and stop() Methods:
Work the same as in the circle() method.
objectName.sinewave.pause() objectName.sinewave.stop()
Source Code:
// SineWave Object
// Copyright 1998 Dan Steinman
// Available at the Dynamic Duo (http://www.dansteinman.com/dynduo/)
// June 22, 1998.
// In order to use this code you must keep this disclaimer
function SineWave(dynlayer,name) {
this.dynlayer = dynlayer.obj
this.name = name
this.play = SineWavePlay
this.slide = SineWaveSlide
this.pause = SineWavePause
this.stop = SineWaveStop
}
function SineWavePlay(amplitude,wavelength,angleinc,angle,cycles,direction,speed,fn) {
if (this.active) return
if (!this.paused) {
this.amplitude = amplitude
this.wavelength = wavelength
this.angleinc = angleinc
this.angle = angle
this.cycles = cycles
this.direction = direction
this.speed = speed
this.fn = fn
this.active = false
this.startX = eval(this.dynlayer+'.x') - this.direction*this.angle*this.wavelength/360
this.startY = eval(this.dynlayer+'.y') + this.amplitude/2*Math.sin(this.angle*Math.PI/180)
}
this.active = true
this.paused = false
eval(this.dynlayer+'.'+this.name+'.slide()')
}
function SineWaveSlide() {
if (this.active && (this.cycles==null || Math.abs(this.angle)<this.cycles*360)) {
this.angle += this.angleinc
var x = this.startX + this.direction*this.angle*this.wavelength/360
var y = this.startY - this.amplitude/2*Math.sin(this.angle*Math.PI/180)
eval(this.dynlayer+'.moveTo('+x+','+y+')')
setTimeout(this.dynlayer+'.'+this.name+'.slide()',this.speed)
}
else if (!this.paused) {
this.active = false
eval(this.fn)
}
}
function SineWavePause() {
if (this.active) {
this.active = false
this.paused = true
}
}
function SineWaveStop() {
this.active = false
this.paused = false
}
Demo:
View sinewave1.html for a sinewave example.
| Home | Next Lesson: Path Animation |