Voici comment creér une scene qui permet de passer d'un objet 3d à un autre
en appuyant sur un bouton :
package {
//_______________________________________________________________
// imports
import flash.display.*;
import flash.events.*;
//---filmed in papervision3D
import org.papervision3d.view.*;
import org.papervision3d.scenes.*;
import org.papervision3d.objects.*;
import org.papervision3d.cameras.*;
import org.papervision3d.materials.*;
import org.papervision3d.materials.utils.*;
import org.papervision3d.objects.primitives.*;
//_______________________________________________________________
// swf settings
[SWF(backgroundColor="#000000")]
//_______________________________________________________________
// class
public class basicPV3D extends BasicView {
//_______________________________________________________________
// variables
private var thing :DisplayObject3D;
private var i :int;
//_______________________________________________________________
// constructor
public function basicPV3D():void {
super(0, 0, true, false, CameraType.FREE);
i = 0;
thing = new Sphere(new WireframeMaterial(0x00FF00));
scene.addChild(thing);
makeButton();
startRendering();
}
//_______________________________________________________________
// render loop
override protected function onRenderTick(e:Event = null):void {
thing.rotationX++;
super.onRenderTick(e);
}
//_______________________________________________________________
// button
private function makeButton():void {
var myButton:SimpleButton = new SimpleButton();
myButton.addEventListener(MouseEvent.CLICK, switchUp);
myButton.x = 0;
myButton.y = 0;
//create the look of the states
var down:Sprite = new Sprite();
down.graphics.lineStyle(1, 0x000000);
down.graphics.beginFill(0xFFCC00);
down.graphics.drawRect(10, 10, 100, 30);
var up:Sprite = new Sprite();
up.graphics.lineStyle(1, 0x000000);
up.graphics.beginFill(0x0099FF);
up.graphics.drawRect(10, 10, 100, 30);
var over:Sprite = new Sprite();
over.graphics.lineStyle(1, 0x000000);
over.graphics.beginFill(0x9966FF);
over.graphics.drawRect(10, 10, 100, 30);
// assign the sprites
myButton.upState = up;
myButton.overState = over;
myButton.downState = down;
myButton.hitTestState = up;
addChild(myButton);
}
//_______________________________________________________________
// switch primitives
private function switchUp(e:MouseEvent):void {
scene.removeChild(thing);
if(i == 0){
thing = new Cube(new MaterialsList({all: new WireframeMaterial(0xff00ff)}));
} else if(i == 1) {
thing = new Cylinder(new WireframeMaterial(0x0000FF));
} else if(i == 2) {
thing = new Cone(new WireframeMaterial(0xfff000));
} else if(i == 3) {
thing = new Arrow(new WireframeMaterial(0xff00cc));
} else {
thing = new Sphere(new WireframeMaterial(0x00ff00));
i = -1;
}
scene.addChild(thing);
i++;
}
}
}