函数体:
Sprite2D(p_sName:String = "", p_oContent:DisplayObject = null, p_nScale:Number = 1)
Creates a Sprite2D.
下面是复制了一些图片到flash里面的效果图:
树的模型:
参考官方的代码:
- package
- {
- import flash.display.*;
- import flash.net.URLRequest;
- import flash.events.*;
- import flash.ui.*;
- import sandy.core.Scene3D;
- import sandy.core.data.*;
- import sandy.core.scenegraph.*;
- import sandy.materials.*;// 材质
- import sandy.materials.attributes.*;//材质属性
- import sandy.primitive.*;//简单模型
- import sandy.util.*;
- import sandy.events.*;
- public class My3D2 extends Sprite
- {
- private var scene:Scene3D;
- private var camera:Camera3D;
- private var queue:LoaderQueue;
- private var numTree:Number =30;
- public function My3D2():void
- {
- queue = new LoaderQueue();
- queue.add( "tree", new URLRequest("tree1.gif") );
- queue.addEventListener(SandyEvent.QUEUE_COMPLETE, loadComplete );
- queue.start();
- }
- public function loadComplete(event:QueueEvent ):void
- {
- // 创建摄影机
- camera = new Camera3D( 500, 300 );
- camera.y = 10;
- camera.z = -300;
- var root:Group = createScene();
- // 场景一个带摄影机的场景
- scene = new Scene3D( "scene", this, camera, root );
- scene.rectClipping = true;
- // 进行监听
- addEventListener( Event.ENTER_FRAME, enterFrameHandler );
- stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressedHandler);
- }
- private function createScene():Group
- {
- var g:Group = new Group();
- // 创建sprite2d 复制50个对象,
- for(var i:Number=0; i<numTree; i++)
- {
- var bit:Bitmap = new Bitmap(queue.data["tree"].bitmapData);
- var s:Sprite2D = new Sprite2D("tree"+i,bit,1);
- s.x = Math.random()*600 - 300;
- s.z = Math.random()*600;
- s.y = 0;
- g.addChild(s);
- }
- return g;
- }
- private function enterFrameHandler( event : Event ) : void
- {
- scene.render();//渲染场景
- }
- private function keyPressedHandler(event:KeyboardEvent):void {
- switch(event.keyCode) {
- case Keyboard.UP:
- camera.moveForward(5);//控制摄影机前进
- break;
- case Keyboard.DOWN:
- camera.moveForward(-5);//控制摄影机后退
- break;
- }
- }
- }
- }
过程:
创建摄影机,创建场景,创建带有摄影机的场景,在摄影机里面添加对象,渲染对象
- queue = new LoaderQueue();
- queue.add( "tree", new URLRequest("tree1.gif") );
- queue.addEventListener(SandyEvent.QUEUE_COMPLETE, loadComplete );
- queue.start();
这一段代码是加载外部的图片:
- for(var i:Number=0; i<numTree; i++)
- {
- var bit:Bitmap = new Bitmap(queue.data["tree"].bitmapData);
- var s:Sprite2D = new Sprite2D("tree"+i,bit,1);
- s.x = Math.random()*600 - 300;
- s.z = Math.random()*600;
- s.y = 0;
- g.addChild(s);
- }
- return g;
- }
这一段是创建一定数目的数目:numTree 可以根据自己的设定来设计所需要的图形数.
设置它的坐标。
private function enterFrameHandler( event : Event ) : void
{
scene.render();//渲染场景
}
当然使用渲染图形
同样如果觉得不爽,还可以配合键盘来使用,使图形变得更加有趣
private function keyPressedHandler(event:KeyboardEvent):void {
switch(event.keyCode) {
case Keyboard.UP:
camera.moveForward(5);//控制摄影机前进
break;
case Keyboard.DOWN:
camera.moveForward(-5);//控制摄影机后退
break;
}
}
实现一个镜头前推和后拉的效果
好就这样。