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 的人都会把它记住
相关文章推荐
- Sandy引擎学习笔记: 三维效果初试
- Sandy引擎学习笔记: 三维效果初试
- Sandy引擎学习笔记:swf影片剪辑纹理贴图
- Sandy引擎学习笔记:导入MD2模型
- Sandy引擎学习笔记:多维贴图
- Sandy引擎学习笔记:swf影片剪辑纹理贴图
- Sandy引擎学习笔记:导入3ds模型纹理
- Sandy引擎学习笔记:多维贴图
- Sandy引擎学习笔记:导入3ds模型纹理
- Sandy引擎学习笔记:纹理贴图
- Sandy引擎学习笔记:swf影片剪辑纹理贴图
- Sandy引擎学习笔记:纹理贴图
- Sandy引擎学习笔记:摄影机
- Sandy引擎学习笔记:颜色材质
- Sandy引擎学习笔记:导入3dsmax模型
- Sandy引擎学习笔记:颜色材质
- GEoTools学习笔记---显示三维效果--geotools-renderer3d
- 现代OpenGL+Qt学习笔记之六:绘制可旋转、带光照效果的三维物体
- Sandy引擎学习笔记:颜色材质
- Away3D学习笔记1 - 戏说Flash 三维引擎