06Jun
Papervision and Tweener - Random Motion of a Cube
No commentsSo I have needed to learn more about the inner workings of Papervision and control of motion, so I decided to integrate Tweener. Here is just a little demo, just click the movie to give the cube motion, then when the animation is complete the listener for the Mouse Event will be active again.
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.materials.BitmapMaterial;
import org.papervision3d.materials.BitmapFileMaterial;
import org.papervision3d.materials.MaterialsList;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.objects.Collada;
import org.papervision3d.core.proto.DisplayObjectContainer3D;
import org.papervision3d.objects.Cube;
import org.papervision3d.materials.ColorMaterial;
import caurina.transitions.*;
public class PapervisionCubeRandom extends Sprite
{
// image 1 variable represents an image in the library with the class name of CubeTexture
private var image1:BitmapData = new CubeTexture(0,0);
private var container:Sprite;
private var scene:Scene3D;
private var camera:Camera3D;
private var rootNode:DisplayObject3D;
private var ml:MaterialsList = new MaterialsList();
private var customcube:Cube;
public function PapervisionCubeRandom()
{
init3D();
stage.addEventListener(MouseEvent.MOUSE_DOWN, onClickHandler);
}
private function init3D():void {
container = new Sprite();
addChild( container );
container.x = stage.stageWidth * .5;
container.y = stage.stageHeight * .5;
scene = new Scene3D( container );
camera = new Camera3D();
camera.zoom = 10;
rootNode = scene.addChild( new DisplayObject3D("rootNode") );
var ml:MaterialsList = new MaterialsList();
ml.addMaterial(new BitmapFileMaterial("http://manewc.com/projects/flash/PapervisionCubeSides/ski.jpg"), 'face1');
ml.addMaterial(new BitmapMaterial( image1 ), 'face2');
ml.addMaterial(new BitmapMaterial( image1 ), 'face3');
ml.addMaterial(new BitmapMaterial( image1 ), 'face4');
ml.addMaterial(new BitmapMaterial( image1 ), 'face5');
ml.addMaterial(new BitmapFileMaterial("http://manewc.com/projects/flash/i/gahlord.jpg"), 'face6');
customcube = new Cube( ml, 500, 400, 100, 1, 1, 1 );
rootNode.addChild( customcube, "myCube01" );
scene.renderCamera(this.camera);
}
private function onClickHandler(m:MouseEvent):void {
stage.removeEventListener(MouseEvent.MOUSE_DOWN, onClickHandler);
Tweener.addTween(camera,{x:Math.random() * 2000,time:1,transition:"easeoutquint"});
Tweener.addTween(camera,{y:Math.random() * 2000,time:1,transition:"easeoutquint"});
var screen:DisplayObject3D = this.scene.getChildByName("rootNode");
Tweener.addTween(screen,{rotationX:Math.random() * 360,time:1,transition:"easeoutquint"});
Tweener.addTween(screen,{rotationY:Math.random() * 360,time:1,transition:"easeoutquint",onComplete:killListener});
addEventListener ( Event.ENTER_FRAME, Timeline);
}
private function Timeline(e:Event):void
{
scene.renderCamera(this.camera);
}
private function killListener():void
{
removeEventListener ( Event.ENTER_FRAME, Timeline);
stage.addEventListener(MouseEvent.MOUSE_DOWN, onClickHandler);
}
}
}
Categories: Actionscript 3, Papervision, Tweener
Friday, June 6th, 2008 at 10:20 am and is filed under Actionscript 3, Papervision, Tweener. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.