Friday, January 24, 2014

package { import flash.display.Sprite; import flash.events.Event; //--------------------------------

[k]id » papervision3D 2.X EX.07 Planeをバラバラに 個配置する 
package { import flash.display.Sprite; import flash.events.Event; //------------------------------------------------------------ // クラス読み込み shopathome import org.papervision3d.core.geom.Lines3D; import org.papervision3d.core.geom.renderables.Line3D; import org.papervision3d.core.geom.renderables.Vertex3D; import org.papervision3d.materials.special.LineMaterial; import org.papervision3d.cameras.Camera3D; import org.papervision3d.objects.DisplayObject3D; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.view.Viewport3D; //Plane オブジェクトのクラスを追加 import org.papervision3d.objects.primitives.Plane; import org.papervision3d.materials.special.CompositeMaterial; import org.papervision3d.materials.WireframeMaterial; import org.papervision3d.materials.ColorMaterial; //クリックイベントを有効 import org.papervision3d.events.InteractiveScene3DEvent; import caurina.transitions.Tweener; [SWF(backgroundColor="#ffffff")]; public class Main extends shopathome Sprite { //------------------------------------------------------------ // 変数定義 private var lines3D:Lines3D; private var viewport:Viewport3D; shopathome private var scene:Scene3D; private var camera:Camera3D; private var renderer:BasicRenderEngine; private var rootNode:DisplayObject3D; public function Main() { //------------------------------------------------------------ // カメラ視点等の定義 viewport=new Viewport3D(0,0,true,true); scene=new Scene3D ; camera=new Camera3D ; renderer=new BasicRenderEngine ; rootNode=scene.addChild(new DisplayObject3D("rootNode")); // addChild(viewport); camera.zoom=1; camera.focus=1000; camera.x=200; camera.y=200; camera.target=DisplayObject3D.ZERO; shopathome //------------------------------------------------------------ // ラインを投影するための変数定義 //[X座標の線] var X_line:Line3D; var X_strV:Vertex3D; var X_endV:Vertex3D; var X_lineM:LineMaterial=new LineMaterial(0xFF0000,0.2); //[Y座標の線] var Y_line:Line3D; var Y_strV:Vertex3D; var Y_endV:Vertex3D; var Y_lineM:LineMaterial=new LineMaterial(0x00FF00,0.2); //[Z座標の線] var Z_line:Line3D; var Z_strV:Vertex3D; var Z_endV:Vertex3D; var Z_lineM:LineMaterial=new LineMaterial(0x0000FF,0.2); // lines3D=new Lines3D ; scene.addChild(lines3D); // //------------------------------------------------------------ // X座標の線 X_strV=new Vertex3D(-1000,0,0); X_endV=new Vertex3D(1000,0,0); X_line=new Line3D(lines3D,X_lineM,2,X_strV,X_endV); lines3D.addLine(X_line); //------------------------------------------------------------ // Y座標の線 Y_strV=new Vertex3D(0,-1000,0); Y_endV=new Vertex3D(0,1000,0); Y_line=new Line3D(lines3D,Y_lineM,2,Y_strV,Y_endV); lines3D.addLine(Y_line); //------------------------------------------------------------ // Z座標の線 Z_strV=new Vertex3D(0,0,-1000); Z_endV=new Vertex3D(0,0,1000); Z_line=new Line3D(lines3D,Z_lineM,2,Z_strV,Z_endV); lines3D.addLine(Z_line); //------------------------------------------------------------ // Plane オブジェクトを追加 for (var i:int=0; i <10; i++) { // pMatというマテリアルを定義 マテリアルはテクスチャみたいなもんかな var pMat:CompositeMaterial = new CompositeMaterial(); // pMatにワイヤーフレームの要素を追加 pMat.addMaterial(new WireframeMaterial(0xcccccc, 0.6)); // pMatに色の要素を追加 pMat.addMaterial(new ColorMaterial(Math.floor(Math.random() * 0xFFFFFF), 0.6)); // pMatに裏面に色をつける pMat.doubleSided = true; //マテリアルに対してクリックイベントを有効にするためにinteractiveをtrueに pMat.interactive=true; // 新たにplaneBという名前でplaneを定義して new Plane(pMat, 100, 100, 6, 6); //new Plane(マテリアルを設定 , 縦 , 横 , 横の分解数, 縦の分解数) //という感じでPlaneを設定 var planeA:Plane = new Plane(pMat, 10, 10, 6, 6); planeA.x = Math.random()*100-50; planeA.y = Math.random()*100-50; planeA.z shopathome = Math.random()*100-50; planeA.rotationX = Math.random()*360; planeA.rotationY = Math.random()*360; //ここでlines3Dに追加する shopathome lines3D.addChild(planeA); shopathome //クリックイベントを追加 planeA.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onClickHandler); } addEventListener(Event.ENTER_FRAME,onFrame); } public function onFrame(e:Event):void { //------------------------------------------------------------ // マウスの座標でZ軸を基点に回転 lines3D.yaw((mouseX - (stage.stageWidth / 2)) / (stage.width / 2) * 5); renderer.renderScene(scene,camera,viewport); } private function onClickHandler(e:Event) { var target :DisplayObject3D = new DisplayObject3D(); var planeA:Plane=Plane(e.target); var obj:DisplayObject3D=camera.target; obj.x = planeA.x; obj.y = planeA.y; obj.z = planeA.z; target.copyTransform( e.currentTarget shopathome ); target.moveBackward(-100); Tweener.addTween( camera, { x:target.x, y:target.y, z:target.z, rotationX:e.currentTarget.rotationX, rotationY:e.currentTarget.rotationY, rotationZ:e.currentTarget.rotationZ, time:5, transition:"easeInOut" } ); } } } この記事を読んだ方は下記も投稿も読んでいます Facebookの友達リストを非表示にする方法 Facebookの友達リストを非表示にする方法 タイムライン編 文字コードをWEB上で変換してくれるサイト[文字コード変換WEB mozicode ] jQueryでURLパラメータを扱う get引数を使いたい jQueryでタイマー処理 X秒後にフェードイン等 コメント トラックバック
集中連載
コンテンツ 連載一覧 Photo ギャラリー プロフィール サイトマップ ダウンロード ことえり用 CSS 変換辞書 関連サイト Ca-style 城所さん 開業準備 カテゴリー: Flash T

No comments:

Post a Comment