読者です 読者をやめる 読者になる 読者になる

Away3Dを触ってみた2


Etude_away3d2.swf
マウスオーバーでぐりぐり動きます。

ソースはこんな感じ

package{
    include "../import.as";

    import away3d.cameras.*;
    import away3d.objects.*;
    import away3d.core.material.*;
    import away3d.core.scene.*;
    import away3d.core.render.*;

    [SWF(width="400", height="400", backgroundColor="#ffffff", frameRate="30")]
    public class Etude extends View3D{ // View3Dを継承(View3DはSpriteを継承してるのでこれでいい)
    
        public function Etude(){
            // 最初の画面大きさ
            var w:uint = stage.stageWidth;
            var h:uint = stage.stageHeight;
            
            stage.scaleMode = StageScaleMode.NO_SCALE;  // 拡大縮小の無効
            stage.align = StageAlign.TOP_LEFT;          // 配置を左上に
            stage.addChildAt( new BgShape( w, h), 0);   // 背景の追加
            stage.addChild( new FPSTextField( stage));  // fps表示欄の追加
            
            // 自分の位置の設定
            x = w/2;
            y = h/2;
            
            // カメラ設定
            camera.x = 0;
            camera.y = 0;
            camera.z = -400;
            camera.focus = 400;
            camera.zoom = 1;
            
            // ライト生成
            var light:Light3D = new Light3D();
            light.color = 0xcccccc;
            light.x = -350;
            light.y = 450;
            light.z = -350;
            scene.addChild(light);
            
            // cube生成
            var cube:Cube = new Cube({
                material:new WireframeMaterial(0x999999),
                y:0,
                x:0,
                height:400,
                width:400,
                depth:400
            });
            scene.addChild( cube);
            
            // カメラをcubeのほうへ向ける
            camera.lookAt( cube.position);
            
            // イベント設定
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
            function onEnterFrame( e:Event):void{
                cube.rotationX = mouseX;
                cube.rotationY = mouseY;
            
                render();
            }
        }
    }
}