sandy学习笔记:Sprite2D 对象

 

函数体:

Sprite2D(p_sName:String = "", p_oContent:DisplayObject = null, p_nScale:Number = 1)
Creates a Sprite2D.

 

下面是复制了一些图片到flash里面的效果图:

 

 

 

 

 

树的模型:

 

参考官方的代码:

  1. package
  2. {
  3.    import flash.display.*;
  4.    import flash.net.URLRequest;
  5.    import flash.events.*;
  6.    import flash.ui.*;
  7.    import sandy.core.Scene3D;
  8.    import sandy.core.data.*;
  9.    import sandy.core.scenegraph.*;
  10.    import sandy.materials.*;// 材质
  11.    import sandy.materials.attributes.*;//材质属性
  12.    import sandy.primitive.*;//简单模型
  13.    import sandy.util.*;
  14.    import sandy.events.*;
  15.    public class My3D2 extends Sprite 
  16.    {
  17.       private var scene:Scene3D;
  18.       private var camera:Camera3D;
  19.       private var queue:LoaderQueue;
  20.       private var numTree:Number =30;
  21.      public function My3D2():void
  22.      {
  23.        queue = new LoaderQueue();
  24.        queue.add( "tree"new URLRequest("tree1.gif") );
  25.        queue.addEventListener(SandyEvent.QUEUE_COMPLETE, loadComplete );
  26.        queue.start();
  27.      }
  28.       public function loadComplete(event:QueueEvent ):void
  29.       {  
  30.          // 创建摄影机
  31.          camera = new Camera3D( 500, 300 );
  32.          camera.y = 10;
  33.          camera.z = -300;
  34.         
  35.          var root:Group = createScene();
  36.          // 场景一个带摄影机的场景
  37.          scene = new Scene3D( "scene"this, camera, root );
  38.          scene.rectClipping = true;
  39.          // 进行监听
  40.          addEventListener( Event.ENTER_FRAME, enterFrameHandler );
  41.          stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressedHandler);
  42.         
  43.       }
  44.       private function createScene():Group
  45.       {
  46.    
  47.          var g:Group = new Group();
  48.          // 创建sprite2d 复制50个对象,
  49.          for(var i:Number=0; i<numTree; i++)
  50.          {
  51.           var bit:Bitmap = new Bitmap(queue.data["tree"].bitmapData);
  52.           var s:Sprite2D = new Sprite2D("tree"+i,bit,1);
  53.           s.x = Math.random()*600 - 300;
  54.           s.z = Math.random()*600;
  55.           s.y = 0;
  56.           g.addChild(s);
  57.          }
  58.           return g;
  59.       }
  60.    
  61.       private function enterFrameHandler( event : Event ) : void
  62.       {
  63.          
  64.          scene.render();//渲染场景
  65.       }
  66.      
  67.       private function keyPressedHandler(event:KeyboardEvent):void {
  68.             switch(event.keyCode) {
  69.                 case Keyboard.UP:
  70.                     camera.moveForward(5);//控制摄影机前进
  71.                     break;
  72.                 case Keyboard.DOWN:
  73.                     camera.moveForward(-5);//控制摄影机后退
  74.                     break;
  75.             }
  76.         }
  77.     
  78.    }
  79. }

过程:

 

创建摄影机,创建场景,创建带有摄影机的场景,在摄影机里面添加对象,渲染对象

  1. queue = new LoaderQueue();
  2.        queue.add( "tree"new URLRequest("tree1.gif") );
  3.        queue.addEventListener(SandyEvent.QUEUE_COMPLETE, loadComplete );
  4.        queue.start();
这一段代码是加载外部的图片:

 

  1.  for(var i:Number=0; i<numTree; i++)
  2.          {
  3.           var bit:Bitmap = new Bitmap(queue.data["tree"].bitmapData);
  4.           var s:Sprite2D = new Sprite2D("tree"+i,bit,1);
  5.           s.x = Math.random()*600 - 300;
  6.           s.z = Math.random()*600;
  7.           s.y = 0;
  8.           g.addChild(s);
  9.          }
  10.           return g;
  11.       }

这一段是创建一定数目的数目: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;
   }
        }
 

实现一个镜头前推和后拉的效果

好就这样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值