您的位置:首页 > 其它

Sandy引擎学习笔记: 三维效果初试

2012-02-16 20:47 369 查看


经过一个上午的学习,感觉到这个sandy 发布的as3.0 真的很强大,看了官方一些介绍,把它做了出来

package

{

import flash.display.Sprite;

import flash.events.*;

import sandy.core.Scene3D;

import sandy.core.scenegraph.*;

import sandy.primitive.*;

import sandy.core.data.*;

import sandy.materials.*;

import sandy.materials.attributes.*;

import flash.display.BitmapData;

import flash.display.Bitmap;

import flash.ui.Keyboard;

public class DD extends Sprite

{

private var scence:Scene3D;

private var camera:Camera3D;

private var box:Box;

private var rot:int=45;

private var img:Mypic;

private var bitmap:Bitmap;

private var up:Boolean;

private var down:Boolean;

private var left:Boolean;

private var right:Boolean;

public function DD()

{

img=new Mypic(0,0);

bitmap=new Bitmap(img);

camera=new Camera3D(500,400);//建立一个摄影机

camera.z=-400;

var group:Group=createScence();

scence=new Scene3D("scene1",this,camera,group);//建立一个场景

scence.root.addChild(camera);

addEventListener(Event.ENTER_FRAME,Run);

stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyDown);

stage.addEventListener(KeyboardEvent.KEY_UP,KeyUp);

stage.addEventListener(Event.ENTER_FRAME,Runing);

}

private function createScence():Group

{

//添加材质

//第一步,设置材质属性

var materia:MaterialAttributes =new MaterialAttributes(

new LightAttributes(true,0.3),

new LineAttributes(1,0x2111BB,1)

);

//第二步,设置材质属性

var material:Material = new ColorMaterial( 0xFFCC33, 1, materia );//显示颜色材质属性

var material2:Material = new BitmapMaterial(bitmap.bitmapData);//显示颜色材质属性

material.lightingEnable = true;

material.lightingEnable=true;

var app:Appearance = new Appearance( material);//指定材质给可视物体

var app2:Appearance = new Appearance( material2 );//指定材质给可视物体纹理贴图

var g:Group=new Group();

box=new Box("mybox",100,100,100);

box.appearance = app;

box.appearance = app2;

g.addChild(box);

return g;

}

private function Run(event:Event):void

{

box.rotateX=rot;

box.rotateY=45;

rot+=1;

scence.render();//渲染场景

}

private function KeyDown(event:KeyboardEvent):void

{

switch (event.keyCode)

{

case Keyboard.UP :

up=true;

break;

case Keyboard.DOWN :

down=true;

break;

case Keyboard.LEFT :

left=true;

break;

case Keyboard.RIGHT :

right=true;

break;

}

}

private function KeyUp(event:KeyboardEvent):void

{

if (event.keyCode==Keyboard.UP)

{

up=false;

} else if (event.keyCode==Keyboard.DOWN)

{

down=false;

} else if (event.keyCode==Keyboard.LEFT)

{

left=false;

} else if (event.keyCode==Keyboard.RIGHT)

{

right=false;

} else

{

}

}

private function Runing(event:Event):void

{

if (up)

{

camera.z+=8;

//camera.scaleY+=4;

} else if (down)

{

camera.z-=8;

} else if (left)

{

camera.pan+=2;

} else if (right)

{

camera.pan-=2;

} else

{

}

}

}

}

感觉还不错,把这个贴图了一下,三维的效果都出来了,加上了摄影机,效果都不错。

但是感觉到3d计算都很大,当我把这个东西放大的时候,cpu占有率高出了很多,有兴趣的人可以去官方网下载类库,还有帮助文档。

这个玩意不是一个玩具,但是热爱flash 的人都会把它记住
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: