Title: InteractiveScene3DEvent example
Interactivity example with pv3d (click on the photo) using BasicView - revision 702 - [update removed onComplete + small improvements + tiled material] - also uses Tweener . JPG by mimiyaw
Actionscript:
-
/**
-
* v0.3 code by dehash.com 2008
-
* Released as open source under the BSD License
-
* http://www.opensource.org/licenses/bsd-license.php
-
*/
-
package com.dehash.pv3d.examples.interactivity {
-
import org.papervision3d.objects.primitives.Plane;
-
import org.papervision3d.view.BasicView;
-
import org.papervision3d.events.FileLoadEvent;
-
import org.papervision3d.materials.BitmapFileMaterial;
-
import org.papervision3d.events.InteractiveScene3DEvent;
-
import flash.events.Event;
-
// http://code.google.com/p/tweener/
-
import caurina.transitions.Tweener;
-
-
[SWF(width="800", height="600", backgroundColor="0xffffff")]
-
-
public class InteractiveScene3DEventExample extends BasicView
-
{
-
private var plane:Plane;
-
private var quality:uint = 8;
-
private var planeWidth:uint = 800;
-
private var planeHeight:uint = 600;
-
private var bitmapFileMaterial:BitmapFileMaterial;
-
-
public function InteractiveScene3DEventExample(viewportWidth:Number = 800, viewportHeight:Number = 600,
-
scaleToStage:Boolean=true, interactive:Boolean=true, cameraType:String="CAMERA3D")
-
{
-
super(viewportWidth, viewportHeight, scaleToStage, interactive, cameraType);
-
-
bitmapFileMaterial = new BitmapFileMaterial();
-
bitmapFileMaterial.interactive = true;
-
bitmapFileMaterial.doubleSided = true;
-
bitmapFileMaterial.smooth = true;
-
bitmapFileMaterial.tiled = true;
-
-
bitmapFileMaterial.addEventListener(FileLoadEvent.LOAD_COMPLETE, handleBitmapFileMaterialLoaded, false, 0, true);
-
bitmapFileMaterial.addEventListener(FileLoadEvent.LOAD_ERROR, handleBitmapFileMaterialError, false, 0, true);
-
bitmapFileMaterial.texture = "assets/2782350904_dd8b955fb1_b.jpg";
-
-
plane = new Plane(null, planeWidth, planeHeight, quality);
-
plane.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, planeClickedHandler, false, 0, true);
-
plane.scaleX = 0;
-
plane.scaleY = 0;
-
-
scene.addChild(plane);
-
-
camera.target = plane;
-
camera.zoom = 60;
-
-
this.startRendering();
-
}
-
-
private function handleBitmapFileMaterialLoaded(e:FileLoadEvent):void {
-
plane.material = bitmapFileMaterial;
-
Tweener.addTween(plane, { time:1, transition:'easeoutquint', scaleX: 1, scaleY: 1} );
-
}
-
-
private function handleBitmapFileMaterialError(e:FileLoadEvent):void {
-
trace('handleBitmapFileMaterialError'+e);
-
}
-
-
private function planeClickedHandler(e:InteractiveScene3DEvent):void {
-
if (!Tweener.isTweening(plane)) {
-
var targetRotation:Number = (plane.rotationY <360) ? 360 : 0 ;
-
Tweener.addTween(plane, { time:6, transition:'easeinoutbounce',
-
rotationY: targetRotation } );
-
}
-
}
-
-
protected override function onRenderTick(event:Event = null):void {
-
var rotY: Number = (mouseY-(stage.stageHeight/2))/(stage.height/2)*(1200);
-
var rotX: Number = (mouseX-(stage.stageWidth/2))/(stage.width/2)*(-1200);
-
camera.x = camera.x + (rotX - camera.x) / 5;
-
camera.y = camera.y + (rotY - camera.y) / 5;
-
renderer.renderScene(scene, camera, viewport)
-
}
-
-
}
-
}