經過一個上午的學習,感覺到這個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 的人都會把它記住