经过一个上午的学习,感觉到这个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 的人都会把它记住