Esempio: Animazione Bezier
import flash.display.Sprite; import flash.events.Event; import org.papervision3d.view.*; import org.papervision3d.scenes.Scene3D; import org.papervision3d.cameras.Camera3D; import org.papervision3d.materials.*; import org.papervision3d.materials.utils.MaterialsList; import org.papervision3d.objects.*; import org.papervision3d.objects.primitives.*; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.materials.shadematerials.*; import org.papervision3d.lights.*; import caurina.transitions.Tweener; import caurina.transitions.properties.CurveModifiers; var viewport:Viewport3D; var scena:Scene3D; var camera:Camera3D; var renderer:BasicRenderEngine; // inizializzaziamo le special properties di caurina CurveModifiers.init(); viewport = new Viewport3D(400, 200, true, true); addChild(viewport); scena = new Scene3D(); camera = new Camera3D(); camera.y=0; camera.z=0; camera.x=450; renderer = new BasicRenderEngine(); // I MATERIALI // ----------- var thelight:PointLight3D = new PointLight3D(false); thelight.z = -300; thelight.x = 300; var materiale:FlatShadeMaterial = new FlatShadeMaterial(thelight, 0x999999, 0x000000); var materialeFreccia:FlatShadeMaterial = new FlatShadeMaterial(thelight, 0x3A6A9A, 0x104070); materialeFreccia.doubleSided = true; // I SOLIDI // -------- var solidoA = new Cube(new MaterialsList({all:materiale}), 50, 50, 300); var solidoB = new Cube(new MaterialsList({all:materiale}), 50, 50, 300); var Freccia = new PaperPlane(materialeFreccia,0.7); var puntoTelecamera = new DisplayObject3D("puntoDiRifxTelecamera"); var puntoAereo = new Sphere(materiale,20); // LE POSIZIONI INIZIALI // --------------------- Freccia.y=0; puntoAereo.copyPosition(Freccia); puntoAereo.z= Freccia.z+100; solidoA.z = 200; solidoB.z = 600; puntoTelecamera.z = solidoB.z - solidoA.z; puntoTelecamera.y = camera.y; camera.lookAt(puntoTelecamera); // AGGIUNGIAMO I SOLIDI ALLA SCENA // ------------------------------- //scena.addChild(puntoAereo); scena.addChild(solidoA); scena.addChild(solidoB); scena.addChild(Freccia); // L'ANIMAZIONE // ------------ var andata:Array = new Array(); andata.push({z:200, x:200}); andata.push({z:600, x:-200}); var ritorno:Array = new Array(); ritorno.push({z:600, x:+200}); ritorno.push({z:200, x:-200}); Tweener.addTween(puntoAereo, {z:700, x:0, _bezier:andata, time:5, transition:"linear"}); Tweener.addTween(Freccia, {z:800, x:0, _bezier:andata, time:5.5, transition:"linear"}); addEventListener(Event.ENTER_FRAME, onEnterFrame); function onEnterFrame(e:Event):void { if (puntoAereo.z == 700) { Tweener.addTween(puntoAereo, {z:0, x:0, _bezier:ritorno, time:5, transition:"linear"}); Tweener.addTween(Freccia, {z:-100, x:0, _bezier:ritorno, time:5.5, transition:"linear"}); } if (puntoAereo.z==0) { Tweener.addTween(puntoAereo, {z:700, x:0, _bezier:andata, time:5, transition:"linear"}); Tweener.addTween(Freccia, {z:800, x:0, _bezier:andata, time:5.5, transition:"linear"}); } Freccia.lookAt(puntoAereo); renderer.renderScene(scena, camera, viewport); }