package Machinespark.SimpleParallax
{
import flash.display.MovieClip;
import flash.display.Stage;
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.events.Event;
public class SimpleParallax extends MovieClip{
public var FLAG_MOVE_X_AXIS:Boolean = true;
public var FLAG_MOVE_Y_AXIS:Boolean = true;
private var ParallaxTimer:Timer = new Timer(20);
private var ParallaxObjects:Array = new Array();
private var ParallaxParent:MovieClip = new MovieClip();
private var ParallaxEase:Number = 6;
private var ParallaxWidth:Number = 0;
private var ParallaxHeight:Number = 0;
public function SimpleParallax(intParallaxWidth:Number, intParallaxHeight:Number) {
ParallaxWidth = intParallaxWidth;
ParallaxHeight = intParallaxHeight;
ParallaxTimer.addEventListener(TimerEvent.TIMER, UpdateParallax);
}
public function AddPane(mcPane:MovieClip, zDepth:Number):void {
var NewPane:MovieClip = new MovieClip();
NewPane.addChild(mcPane);
NewPane.zDepth = zDepth;
ParallaxParent.addChild(NewPane);
ParallaxObjects.push(NewPane);
SortParallax();
}
public function StartParallax():void {
ParallaxTimer.start();
}
public function StopParallax():void {
ParallaxTimer.stop();
}
public function AttachParallax(mcTarget:MovieClip):void {
mcTarget.addChild(ParallaxParent);
}
public function DestroyParallax():void {
var i:Number = ParallaxObjects.length;
while (i--) {
var ThisPane:MovieClip = MovieClip(ParallaxObjects[i]);
ParallaxParent.removeChild(ThisPane);
}
ParallaxParent.parent.removeChild(ParallaxParent);
ParallaxTimer.removeEventListener(TimerEvent.TIMER, UpdateParallax);
}
private function SortParallax():void {
var i:Number = ParallaxObjects.length;
var j:Number = 0;
while (i--) {
var ThisPane:MovieClip = MovieClip(ParallaxObjects[i]);
var zDepth:Number = ThisPane.zDepth;
if (zDepth > j) ParallaxParent.addChild(ThisPane);
}
}
private function UpdateParallax(e:Event):void {
var mX:Number = ParallaxParent.mouseX;
var mY:Number = ParallaxParent.mouseY;
var i:Number = ParallaxObjects.length;
while (i--) {
// Get This Pane
var ThisPane:MovieClip = MovieClip(ParallaxObjects[i]);
// Current Coordinates
var cX:Number = ThisPane.x;
var cY:Number = ThisPane.y;
var cZ:Number = ThisPane.zDepth;
// Plot Destination Coordinates
var dX:Number = cX - (cX + mX * ThisPane.zDepth/5);
var dY:Number = cY - (cY + mY * ThisPane.zDepth/5);
// Move Pane to Destination
ThisPane.x = cX + ((dX - cX) / ParallaxEase) + ParallaxWidth / 2;
ThisPane.y = cY + ((dY - cY) / ParallaxEase) + ParallaxHeight / 2;
}
}
}
}