/* 前作ったのをPV3Dで。 画面をクリックするとPlaneが球体に配置されます。 */ package { import caurina.transitions.Tweener; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import org.papervision3d.cameras.Camera3D; import org.papervision3d.materials.ColorMaterial; import org.papervision3d.objects.DisplayObject3D; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.view.Viewport3D; import caurina.transitions.Tweener; import flash.display.Sprite; import flash.events.Event; import flash.filters.BlurFilter; import flash.utils.setInterval; import org.papervision3d.cameras.Camera3D; import org.papervision3d.materials.special.Letter3DMaterial; import org.papervision3d.objects.DisplayObject3D; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.typography.Text3D; import org.papervision3d.typography.fonts.HelveticaBold; import org.papervision3d.view.Viewport3D; import org.papervision3d.view.layer.ViewportLayer; [SWF(width="465", height="465", backgroundColor="0xffffff", frameRate="40")] public class PV3D_sample06 extends Sprite { private var container:Sprite; private var viewport:Viewport3D; private var scene:Scene3D; private var camera:Camera3D; private var renderer:BasicRenderEngine; private var rootNode:DisplayObject3D; private var sphereNode:DisplayObject3D; private var flug:int; private var words1:Text3D; public function PV3D_sample06() { container=new Sprite(); addChild(container); container.x=stage.stageWidth / 2; container.y=stage.stageHeight / 2; viewport=new Viewport3D(0, 0, true, true); scene=new Scene3D(); camera=new Camera3D(); renderer=new BasicRenderEngine(); rootNode=scene.addChild(new DisplayObject3D("rootNode")); sphereNode=rootNode.addChild(new DisplayObject3D("sphereNode")); addChild(viewport); camera.y=50; camera.zoom=100; camera.focus=50; camera.target=DisplayObject3D.ZERO; viewport.containerSprite.buttonMode = true; var mat:Letter3DMaterial=new Letter3DMaterial(); mat.fillColor=0x000000; mat.doubleSided=true; mat.doubleSided=mat.interactive=true; words1=new Text3D("The Go's", new HelveticaBold(), mat); words1.z = 5000 words1.y = -250 scene.addChild(words1) breakWords( words1) addEventListener(Event.ENTER_FRAME, onFrame); } private function onFrame(e:Event):void { renderer.renderScene(scene, camera, viewport); } private function breakWords(words:Text3D):void { for each(var word:DisplayObject3D in words.letters) { Tweener.addTween(word, {x:Math.random() * 2000 - 1000, y:Math.random() * 2000 - 1000, z:Math.random() * 2000 - 1000, rotationX:Math.random() * 360, rotationY:Math.random() * 360, rotationZ:Math.random() * 360, time:4, delay:3 * Math.random()}); } } } } flash on 2010-3-18