Papervision3D ver.1.7をいじってみたので、メモ
//自分でリンケージしたやつ var c:CubeMaterial = new CubeMaterial(); //Cubeに貼るときはこんな感じみたい var materials:MaterialsList = new MaterialsList( { //MovieMaterialの第3引数をtrueにしないと、 //あとからフレームつかったmethodできないみたい front: new MovieMaterial(c, false, true), back: new MovieMaterial(c, false, false), right: new MovieMaterial(c), left: new MovieMaterial(c, false, false), top: new MovieMaterial(c, false, true), bottom: new MovieMaterial(c) } ); //materialsからひっぱってくるときはこんな感じで var mm:MovieMaterial = materials.getMaterialByName("front") as MovieMaterial; //ひっぱったあとは、textureの中にMovieClipが入っているからいろいろできる mm.texture.gotoAndStop(3); //この場合、どれをひっぱってきても同じcを指しているから第3引数をtrueに //してあるやつはみんな3フレーム目にいく
今回はじめてSWFを埋め込んでみた。→nitoyonさん本当スゴイっす。そしてありがとう!!!
→はてなダイアリーに Flash を埋め込むガジェット
全ソースもくっつけておく。このソースのほとんどがPV3Dをおとしたときについてくるexamplesソースの中のものだから、それ作ったひとが著作権者だとおもう。MITライセンスっていうのか。
CubeMaterialっていうのはflaからかきだしたswcの中にはいっているMovieClipです。
package { import flash.display.MovieClip; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.events.MouseEvent; import org.papervision3d.cameras.Camera3D; import org.papervision3d.cameras.FreeCamera3D; import org.papervision3d.events.InteractiveScene3DEvent; import org.papervision3d.materials.ColorMaterial; import org.papervision3d.materials.InteractiveColorMaterial; import org.papervision3d.materials.InteractiveMovieMaterial; import org.papervision3d.materials.MaterialsList; import org.papervision3d.materials.MovieAssetMaterial; import org.papervision3d.materials.MovieMaterial; import org.papervision3d.objects.Cube; import org.papervision3d.objects.DisplayObject3D; import org.papervision3d.objects.Plane; import org.papervision3d.scenes.InteractiveScene3D; import org.papervision3d.scenes.Scene3D; import org.papervision3d.utils.InteractiveSceneManager; import org.papervision3d.utils.InteractiveSprite; [SWF(width="400", height="300", frameRate="30", backgroundColor="#000000")] public class PaperVisionTest1 extends Sprite { protected var container :Sprite; protected var scene :InteractiveScene3D; protected var camera :Camera3D; protected var ism :InteractiveSceneManager; protected var plane :Plane; private var mycube:Cube; public function PaperVisionTest1():void { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; init3D(); createPlane(); addEventListener(Event.ENTER_FRAME, loop); } protected function init3D():void { container = new InteractiveSprite(); addChild(container); container.name = "mainCont"; container.x = stage.stageWidth*.5; container.y = stage.stageHeight*.5; scene = new InteractiveScene3D(container); ism = scene.interactiveSceneManager; camera = new Camera3D(); camera.zoom = 3; camera.focus = 100; } protected function createPlane():void { var c:CubeMaterial = new CubeMaterial(); var c2:CubeMaterial = new CubeMaterial(); var c3:CubeMaterial = new CubeMaterial(); var material:MovieMaterial = new InteractiveMovieMaterial(c3, true, true); material.animated = true; material.smooth = true; var materials:MaterialsList = new MaterialsList( { //all: front: new MovieMaterial(c, false, true), back: new MovieMaterial(c, false, true), right: new MovieMaterial(c2, false ,true), left: new InteractiveMovieMaterial(c, false, true), top: new MovieMaterial(c, false, true), bottom: new MovieMaterial(c) } ); var mm:MovieMaterial = materials.getMaterialByName("right") as MovieMaterial; mm.texture.gotoAndStop(6); mm.doubleSided = true; mycube = new Cube( materials); scene.addChild(mycube); mycube.x = -300; plane = new Plane( material, 500, 500); plane.x = 600; plane.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, handleMainClick); mycube.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, handleMainClick2); scene.addChild(plane); } protected function loop(event:Event):void { camera.x = -(container.mouseX * 3)/2; camera.y = (container.mouseY * 3); scene.renderCamera(camera); } protected function handleMainClick(e:InteractiveScene3DEvent):void { trace("mouse click from: ", e.currentTarget, e.displayObject3D, e.sprite, e.target); var do3d:DisplayObject3D = e.target as DisplayObject3D; var mm:MovieMaterial = e.target.material as MovieMaterial; mm.texture.gotoAndStop(Math.floor(Math.random() * 6) + 1); } protected function handleMainClick2(e:InteractiveScene3DEvent):void { trace("mouse click from: ", e.currentTarget, e.displayObject3D, e.sprite, e.target); } } }
■ 自作iPhoneアプリ 好評発売中!
・フォルメモ - シンプルなフォルダつきメモ帳
・ジッピー電卓 - 消費税や割引もサクサク計算!
■ LINEスタンプ作りました!
毎日使える。とぼけたウサギ