阳光VIP

少壮不努力,老大徒伤悲。平日弗用功,自到临期悔。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Sandy引擎学习笔记:swf影片剪辑纹理贴图

Posted on 2012-02-16 20:33  阳光VIP  阅读(168)  评论(0编辑  收藏  举报

Sandy引擎可以像3dsmax 传统的3d制作软件 那样可以支持外部贴图,同样也可以支持swf 的贴图,和flv 的贴图显示,这样一件让人觉得兴奋的事情。

下面引入官方一个代码:(偷懒一下,下次补回更多解析)

 

 

 

 

 

  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 My3D extends Sprite
  16.     {
  17.         private var scene:Scene3D;
  18.         private var camera:Camera3D;
  19.         private var box:Box;
  20.         private var queue:LoaderQueue;
  21.         public function My3D()
  22.         {
  23.             queue = new LoaderQueue();
  24.             queue.add( "test"new URLRequest("main.swf") );
  25.             queue.add( "test2"new URLRequest("main2.swf") );
  26.             queue.addEventListener(SandyEvent.QUEUE_COMPLETE, loadComplete );
  27.             queue.start();
  28.         }
  29.         public function loadComplete(event:QueueEvent ):void
  30.         {
  31.             // We create the camera
  32.             camera = new Camera3D( 300, 300 );
  33.             camera.z = -400;
  34.             var root:Group = createScene();
  35.             scene = new Scene3D( "scene"this, camera, root );
  36.             addEventListener( Event.ENTER_FRAME, enterFrameHandler );
  37.         }
  38.         private function createScene():Group
  39.         {
  40.             // Create the root Group
  41.             var g:Group = new Group();
  42.             // Create a cube so we have something to show
  43.             box = new Box( "box",100,100,100,"tri");
  44.             box.rotateX = 30;
  45.             box.rotateY = 30;
  46.             box.x = 0;
  47.             // we define a simple color material
  48.             var materialAttr:MaterialAttributes = new MaterialAttributes( 
  49.             new LineAttributes( 0, 0xD7D79D, 0 ),
  50.             new LightAttributes( true, 0.1)
  51.             );
  52.             var material:Material = new ColorMaterial( 0xD7D79D, 1, materialAttr );
  53.             material.lightingEnable = true;
  54.             var app:Appearance = new Appearance( material );
  55.             // we define two Movie Material
  56.             var material01:MovieMaterial = new MovieMaterial( queue.data["test"],40);
  57.             material01.lightingEnable = true;
  58.             var app01:Appearance = new Appearance( material01 );
  59.             var material02:MovieMaterial = new MovieMaterial( queue.data["test2"],40);
  60.             material02.lightingEnable = true;
  61.             var app02:Appearance = new Appearance( material02 );
  62.             box.appearance = app;
  63.             box.aPolygons[0].appearance = app01;
  64.             box.aPolygons[1].appearance = app01;
  65.             box.aPolygons[2].appearance = app02;
  66.             box.aPolygons[3].appearance = app02;
  67.             //box.aPolygons[10].appearance = app02;
  68.             //box.aPolygons[11].appearance = app02;
  69.             g.addChild( box );
  70.             return g;
  71.         }
  72.         // The Event.ENTER_FRAME event handler tells the Scene3D to render
  73.         private function enterFrameHandler( event : Event ):void
  74.         {
  75.             box.tilt += 1;
  76.             box.pan += 1;
  77.             //sphere.pan += 1
  78.             scene.render();
  79.         }
  80.     }
  81. }

 

 

其实和普通的图片贴图区别,类只是名称改变而已,操作和图片贴图差不多

 

MovieMaterial(p_oMovie:Sprite, p_nUpdateMS:uint = 40, p_oAttr:MaterialAttributes = null, p_bRemoveTransparentBorder:Boolean = false, p_nHeight:Number = 0, p_nWidth:Number = 0)
Creates a new MovieMaterial.
//创建一个影片剪辑材质
 
 
实际的用途用作材质贴图,为flash贴图增加一种不错的格式;
 
 
 
 
有点累了,下次补上其他 解析
 
 
加载外部文件的的类结合到URLRequest一起使用,既可以加人swf jpeg ,flv等等
 queue = new LoaderQueue();
  1.  
  2.             queue.add( "test"new URLRequest("main.swf") );
  •             queue.add( "test2"new URLRequest("main2.swf") );
  •             queue.addEventListener(SandyEvent.QUEUE_COMPLETE, loadComplete );
  •             queue.start();