第三課程:如何使用攝影機?通過攝影機移動來使攝影的對象產生變化,這樣會使動畫變得容易。因為你不需要改變觀察對象的的屬性,只是改變攝影機的變化
- package
- {
- import flash.display.Sprite;
- import flash.events.*;
- import sandy.core.Scene3D;
- import sandy.core.data.*;
- import sandy.core.scenegraph.*;
- import sandy.materials.*;
- import sandy.materials.attributes.*;
- import sandy.primitive.*;
- import sandy.parser.*;
- import flash.ui.Keyboard;
- public class My3D extends Sprite
- {
- private var scene:Scene3D;
- private var camera:Camera3D;
- private var pot:Shape3D;
- public function My3D()
- {
- var parser:IParser = Parser.create("asset/teieraASE.ASE",Parser.ASE );//匯入ase格式,讓它在flash裡面重寫繪畫
- parser.addEventListener( ParserEvent.FAIL, onError );//模型匯入失敗監聽
- parser.addEventListener( ParserEvent.INIT, createScene );//初始化監聽事件
- stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
- parser.parse();//負載檔案
- }
- private function onError( pEvt:ParserEvent ):void
- {
- trace("負載檔案錯誤");
- }
- private function createScene(p_eEvent:ParserEvent ):void
- {
- camera = new Camera3D( 500, 300 );//建立攝影機
- camera.y = 30;
- camera.z = -200;
- var g:Group = Group( p_eEvent.group);
- pot = g.children[0] as Shape3D;//將模型轉為shape3d 類型
- pot.x = 0;
- var materialAttr:MaterialAttributes = new MaterialAttributes(new LightAttributes( true, 0.2 ) );
- var material:Material = new ColorMaterial( 0xE0F87E, 0.9, materialAttr);//添加顏色材質和和光線
- material.lightingEnable = true;//開啟光線
- var app:Appearance = new Appearance( material);//建立一個物體表面
- pot.appearance = app;
- scene = new Scene3D( "scene", this, camera, g );
- addEventListener( Event.ENTER_FRAME, enterFrameHandler );
- }
- private function enterFrameHandler( event : Event ):void
- {
- //pot.pan +=3;
- scene.render();
- }
- private function keyPressed(event:KeyboardEvent):void
- {
- switch (event.keyCode)
- {
- case Keyboard.UP :
- camera.tilt +=2;//上移動
- break;
- case Keyboard.DOWN :
- camera.tilt -=2;//下移動
- break;
- case Keyboard.RIGHT :
- camera.pan -=2;//左移動
- break;
- case Keyboard.LEFT :
- camera.pan +=2;//右移動
- break;
- case Keyboard.CONTROL :
- camera.roll +=2;//旋轉
- break;
- case Keyboard.PAGE_DOWN :
- camera.z -=5;//向後移動
- break;
- case Keyboard.PAGE_UP ://後移動
- camera.z +=5;
- break;
- }
- }
- }
- }
通過鍵盤控制,使攝影機可以上下左右,前後旋轉推進。