Parabola Object

parabola

The Parabola Object will slide the layer along a parabolic path.

Initialization:


objectName.parabola = new Parabola("objectName","parabola")

Example:


mylayer = new DynLayer("mylayerDiv")

mylayer.parabola = new Parabola("mylayer","parabola")

The play() Method:

The play() method begins the parabola:


objectName.parabola.play(type,distx,disty,xinc,speed,fn)

Examples:


mylayer.parabola.play(1,200,200,5,20)

The stop() Methods:

Work the same as in the circle() method. I didn't bother with a pause method cause I can't see it being useful.


objectName.sinewave.stop()

Source Code:


// Parabola 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 Parabola(dynlayer,name) {

	this.dynlayer = dynlayer.obj

	this.name = name

	this.play = ParabolaPlay

	this.slide = ParabolaSlide

	this.stop = ParabolaStop

}

function ParabolaPlay(type,distx,disty,xinc,speed,fn) {

	if (!this.active) {

		this.type = type

		this.distx = Math.abs(distx)

		this.disty = Math.abs(disty)

		this.dirx = (distx>0)? 1:-1

		this.diry = (disty>0)? 1:-1

		this.xinc = xinc

		this.speed = speed

		this.fn = fn

		this.startX = eval(this.dynlayer+'.x')

		this.startY = eval(this.dynlayer+'.y')

		this.active = false

		this.i = 0

		this.factor = this.disty/Math.pow(this.distx/this.type,2)

		this.active = true

		eval(this.dynlayer+'.'+this.name+'.slide()')

	}

}

function ParabolaSlide() {

	if (this.active && Math.abs(this.i)<this.distx) {

		this.i += this.dirx*this.xinc

		var x = this.startX + this.i

		if (this.type==1) var y = this.startY + this.diry*this.factor*Math.pow(Math.abs(this.i),2)

		if (this.type==2) var y = this.startY + this.diry*this.factor*Math.pow(this.distx/2-Math.abs(this.i),2) + this.diry*this.disty

		eval(this.dynlayer+'.moveTo('+x+','+y+')')

		setTimeout(this.dynlayer+'.'+this.name+'.slide()',this.speed)

	}

	else {

		this.active = false

		eval(this.fn)

	}

}

function ParabolaStop() {

	this.active = false

}

Demo:

View parabola1.html for a parabola demo.

Geometric Objects

Home Next Lesson: Path Animation
copyright 1998 Dan Steinman