注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

秋水伊人的博客

请关注公益活动,免费寻找公厕app http://fuaiia.com

 
 
 

日志

 
 
关于我

一对情侣一起去殉情,可是他们身上的钱只够买一瓶农药,而且这瓶农药的药量只够一个人死,可是最后他们两个人都死了,这是为什么呢?答案:他们买了这瓶农药,打开瓶盖,瓶盖上写着:再来一瓶

网易考拉推荐

Flex与Away3D实例入门  

2010-08-29 20:21:40|  分类: 技术交流 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

因为看到一篇好文章,Getting Started with Adobe  Flex and Away3D,按照他的步骤,做出一个away3D的例子。下面介绍一下。

 

要谈到Flex上的3D开发,away3d是个不错的选择,可以看一下下面的这个例子:

 

 

 

好的,如何能实现这个例子呢?

 

一开始,我们需要得到一个最新的Away3D的版本,我们可以到http://www.away3d.com/download 上去下载她,在FlexBuilder3环境中,新建一个 Flex Project ,起一个名字,例如:Away3D,然后我们点击Finish。

然后,我们将下载之后的zip文件解压缩,里面会有一个叫做away3d的文件和一个nochump这两个文件,我们把上面提到的那两个文件拷贝到这个Away3D的src目录底下。

 

然后,我们要将我们的mxml代码修改为如下的形式:

 

Xml代码 复制代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"    
  3.    width="500" height="400" >  
  4.   <mx:Panel width="100%" height="100%" title="Our 3D Canvas"  
  5.      backgroundColor="#D1F0FF">  
  6.   </mx:Panel>  
  7. </mx:Application>  
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"     width="500" height="400" >   <mx:Panel width="100%" height="100%" title="Our 3D Canvas"      backgroundColor="#D1F0FF">   </mx:Panel> </mx:Application>

 

 

 

然后我们需要新建一个flex类,他叫做FlexView3D,代码如下所示:

 

Java代码 复制代码
  1. package  
  2. {   
  3.   import mx.core.UIComponent;   
  4.   
  5.   public class FlexView3D extends UIComponent   
  6.   {   
  7.     public function FlexView3D()   
  8.     {   
  9.       super();   
  10.     }   
  11.   }   
  12. }  
package {   import mx.core.UIComponent;    public class FlexView3D extends UIComponent   {     public function FlexView3D()     {       super();     }   } }

 

然后我们需要修改我们的mxml为:

 

Java代码 复制代码
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:local="*"  
  3.    layout="absolute" width="500" height="400">   
  4.   <mx:Panel width="100%" height="100%" title="Flex 3D View"  
  5.      backgroundColor="#D1F0FF">   
  6.     <local:FlexView3D width="100%" height="100%" />   
  7.   </mx:Panel>   
  8. </mx:Application>  
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:local="*"    layout="absolute" width="500" height="400">   <mx:Panel width="100%" height="100%" title="Flex 3D View"      backgroundColor="#D1F0FF">     <local:FlexView3D width="100%" height="100%" />   </mx:Panel> </mx:Application>

 

然后我们将我们将之前的那个FlexView3D 类修改为:

 

Java代码 复制代码
  1. package  
  2. {   
  3.   import away3d.core.material.BitmapFileMaterial;   
  4.   import away3d.core.math.Number3D;   
  5.   import away3d.core.scene.View3D;   
  6.   import away3d.objects.Cube;   
  7.      
  8.   import flash.events.Event;   
  9.      
  10.   import mx.core.UIComponent;   
  11.   
  12.   public class FlexView3D extends UIComponent   
  13.   {   
  14.     private var view:View3D;   
  15.        
  16.     private var sotcCube:Cube;   
  17.        
  18.     public function FlexView3D()   
  19.     {   
  20.       super();   
  21.       this.addEventListener(Event.ENTER_FRAME, onFrameEnter);   
  22.     }   
  23.        
  24.     override protected function createChildren():void  
  25.     {   
  26.       super.createChildren();   
  27.          
  28.       if(!this.view)   
  29.       {   
  30.         this.view = new View3D();   
  31.            
  32.         this.view.camera.moveTo(new Number3D(00, -1500));   
  33.         this.view.camera.lookAt(new Number3D(000));   
  34.       }   
  35.       this.addChild(this.view);   
  36.          
  37.       if(!this.sotcCube)   
  38.       {   
  39.         this.sotcCube = new Cube({name: "cube", size: 250});   
  40.         this.sotcCube.material = new BitmapFileMaterial("sotc.jpg");   
  41.       }   
  42.       this.view.scene.addChild(this.sotcCube);   
  43.     }   
  44.        
  45.     override protected function updateDisplayList(   
  46.       unscaledWidth:Number, unscaledHeight:Number):void  
  47.     {   
  48.       super.updateDisplayList(unscaledWidth, unscaledHeight);   
  49.          
  50.       if(this.width / 2 != this.view.x)   
  51.         this.view.x = this.width / 2;   
  52.       if(this.height / 2 != this.view.y)   
  53.         this.view.y = this.height / 2;   
  54.     }   
  55.        
  56.     private function onFrameEnter(event:Event):void  
  57.     {   
  58.       if(this.view && this.view.stage)   
  59.       {   
  60.         this.sotcCube.rotationX += .7;   
  61.         this.sotcCube.rotationY += .5;   
  62.         this.sotcCube.rotationZ += .4;   
  63.            
  64.         this.view.render();   
  65.       }   
  66.     }    
  67.   }   

  评论这张
 
阅读(538)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017