English Sentence Loading...
英语句子加载中...
  • 1 
预览模式: 普通 | 列表

alternativa3d更新为5.0.1

关于A3D目前的版本功能

目前提供的5.0API还没有物体碰撞功能,暂时只有相机的碰撞。
灯光和鼠标控制事件暂时也没有提供,我想下个版本应该会有这些基本的功能。
也就是说,现在的版本还只适合做漫游,或是类CS的东西。

貌似alternativa.engine3d.physics下面有物理碰撞的类。得有空的时候来摸了。

A3D 4 外部贴图

A3D的材质贴图很简单。几行代码就可以搞定。源码如下:

主程序

  1. package cn.com.xy50 {
  2.   
  3.   /*
  4.      * A3D 贴图演示源码
  5.      * @author Johndai80o
  6.      * @datas 06/07/08
  7.      */
  8.  
  9.   import alternativa.engine3d.controllers.CameraController;
  10.   import alternativa.engine3d.core.Camera3D;
  11.   import alternativa.engine3d.core.Object3D;
  12.   import alternativa.engine3d.core.Scene3D;
  13.   import alternativa.engine3d.display.View;
  14.   import alternativa.utils.FPS;
  15.   import alternativa.engine3d.primitives.*;
  16.   import alternativa.engine3d.materials.TextureMaterial;    // 纹理材质类
  17.   import alternativa.types.Texture;         // 贴图需要使用的材质原型
  18.  
  19.  import flash.display.Sprite;
  20.   import flash.display.StageAlign;
  21.   import flash.display.StageScaleMode;
  22.   import flash.events.Event;
  23.   import flash.events.ProgressEvent;
  24.   import flash.display.Loader;
  25.   import flash.net.URLRequest;
  26.   import flash.display.Bitmap;
  27.   import flash.display.BitmapData;
  28.   import flash.text.TextField;
  29.   import flash.text.TextFormat;
  30.  
  31.  import org.aswing.AsWingManager;
  32.  
  33.  [SWF(backgroundColor="#000000", frameRate="100")]
  34.  
  35.  public class Test4 extends Sprite {
  36.  
  37.   private var scene:Scene3D;
  38.    private var view:View;
  39.    private var camera:Camera3D;
  40.    private var cameraController:CameraController;
  41.   
  42.    //private var loader:Loader;
  43.       private var bitmapData:BitmapData;
  44.       private var photoNumber:int=15;
  45.    private var textureList:Array=new Array();
  46.          private var label:TextField;
  47.       private var _Progressbar:progressPanel;
  48.     
  49.    public function Test4() {
  50.     AsWingManager.initAsStandard(this);
  51.     stage.scaleMode = StageScaleMode.NO_SCALE;
  52.     stage.align = StageAlign.TOP_LEFT;
  53.  
  54.    label = new TextField();
  55.  
  56.             var format:TextFormat = new TextFormat();
  57.              format.font = "Verdana";
  58.              format.color = 0xFFFFFF;
  59.              format.size = 18;
  60.              format.underline = true;
  61.              label.defaultTextFormat = format;
  62.              addChild(label);
  63.    
  64.     addEventListener(Event.ADDED_TO_STAGE, loadPhoto);
  65.     _Progressbar=progressPanel.getInstance();
  66.              _Progressbar.showBar(true);
  67.    }
  68.   
  69.    private function loadPhoto(e:Event):void
  70.    {
  71.     label.text=(15-photoNumber+1)+"/15";
  72.              var loader:Loader = new Loader();
  73.              loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
  74.              loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
  75.              var request:URLRequest = new URLRequest("photos/"+photoNumber+".jpg");
  76.              loader.load(request);
  77.    }
  78.   
  79.    private function completeHandler(e:Event):void
  80.    {
  81.     if (photoNumber>0){
  82.      var loader:Loader = Loader(e.target.loader);
  83.               var image:Bitmap = Bitmap(loader.content);
  84.  
  85.              bitmapData = image.bitmapData;
  86.               textureList.push(new Texture(bitmapData));    // 存入贴图材质进 Array
  87.               loadPhoto(new Event(Event.ADDED_TO_STAGE));
  88.      photoNumber--;
  89.     }else{
  90.      removeChild(label);
  91.      _Progressbar.hideBar();
  92.      init();
  93.     }
  94.    }
  95.   
  96.    private function progressHandler(e:ProgressEvent):void
  97.    {
  98.     _Progressbar._Progressbar.setValue(int(e.bytesLoaded/e.bytesTotal*100));
  99.    }
  100.   
  101.    private function init():void {
  102.  
  103.    removeEventListener(Event.ADDED_TO_STAGE, loadPhoto);
  104.    
  105.     // Create scene
  106.     scene = new Scene3D();
  107.     scene.root = new Object3D();
  108.  
  109.    for(var i:int=0;i<=15;i++){
  110.      var _plane:Plane=new Plane(400,300,1,1);    // 建立一个面片
  111.      _plane.setMaterialToAllSurfaces(new TextureMaterial(textureList[i],1,false,false))// 进行贴图设置 -- 参数:材质,贴图透明度,是否重复贴图,贴图平滑度
  112.      _plane.x=Math.random()*4000-1000;
  113.      _plane.z=Math.random()*4000;
  114.      scene.root.addChild(_plane);  
  115.     }
  116.    
  117.     // Add camera and view
  118.     camera = new Camera3D();
  119.     camera.x = 0;
  120.     camera.y = 0;
  121.     camera.z = 0;
  122.     scene.root.addChild(camera);
  123.    
  124.     view = new View();
  125.     addChild(view);
  126.     view.camera = camera;
  127.  
  128.    // Add camera controller
  129.     cameraController = new CameraController(stage);
  130.     cameraController.camera = camera;
  131.     cameraController.setDefaultBindings();
  132.     cameraController.speed = 1000;
  133.     cameraController.controlsEnabled = true;
  134.    
  135.     // FPS counter init
  136.     FPS.init(stage);
  137.  
  138.    stage.addEventListener(Event.RESIZE, onResize);
  139.     stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
  140.     onResize(null);
  141.    }
  142.  
  143.   private function onResize(e:Event):void {
  144.     view.width = stage.stageWidth;
  145.     view.height = stage.stageHeight;
  146.    }
  147.   
  148.    private function onEnterFrame(e:Event):void {
  149.     cameraController.processInput();
  150.     scene.calculate();
  151.    }
  152.   }
  153.  }


-------------------------------  端午节的分割线 ---------------------------------

Bar:

  1. package cn.com.xy50 {
  2.  
  3.   import org.aswing.*;
  4.   import org.aswing.geom.*;
  5.   import flash.events.Event;
  6.  
  7.  /**
  8.    * @author djwolf
  9.    */
  10.   public class progressPanel extends JWindow {
  11.    private var stageWidth:int=550;
  12.    private var stageHeight:int=400;
  13.    private const bgWidth:int=200;
  14.    private const bgHeight:int=12;
  15.    private var  progressPoint:int;
  16.    private static var _instance:progressPanel;
  17.    public var _Progressbar:JProgressBar;
  18.   
  19.   
  20.    public function progressPanel() {
  21.     var _Container:Container=this.getContentPane();
  22.     _Progressbar = new JProgressBar();
  23.        _Progressbar.setSizeWH(bgWidth,bgHeight);
  24.        _Progressbar.setLocation(new IntPoint(0,0));
  25.        _Progressbar.setValue(0);
  26.        _Progressbar.setMinimum(0);
  27.        _Progressbar.setMaximum(100);
  28.  
  29.       var _fl:EmptyLayout=new EmptyLayout();
  30.           var _jp:JPanel=new JPanel(_fl)// create panel
  31.        _Container.append(_jp);
  32.        _jp.append(_Progressbar);
  33.        this.setSizeWH(bgWidth, bgHeight);
  34.              this.setLocationXY(stageWidth/2-bgWidth/2,stageHeight/2-bgHeight/2-40);
  35.              // _Progressbar.setIndeterminate(true);
  36.          }
  37.    private function efHandler(evt:Event):void
  38.    {
  39.     progressPoint++;
  40.     if (progressPoint==100)
  41.     {
  42.      progressPoint=0;
  43.     }
  44.        _Progressbar.setValue(progressPoint);
  45.    }
  46.    public static function getInstance():progressPanel
  47.    {
  48.     if (_instance == null)
  49.     {
  50.      _instance=new progressPanel();
  51.     }
  52.     return _instance;
  53.    }
  54.    public function showBar(haveValue:Boolean):void
  55.    {
  56.     if (!haveValue)
  57.              {
  58.         progressPoint=0;
  59.         _Progressbar.setValue(progressPoint)
  60.        _Progressbar.addEventListener(Event.ENTER_FRAME, efHandler);
  61.        }
  62.     this.show();
  63.    }
  64.    public function hideBar():void
  65.    {
  66.     progressPoint=0;; 
  67.     _Progressbar.removeEventListener(Event.ENTER_FRAME, efHandler);
  68.     this.hide();
  69.    }
  70.   }
  71.  }


-------------------------- : ) ------------------------------

测试地址:http://www.xy50.com.cn/myblog/swfs/test4.swf

Alternativa 3D 跟踪 FP10

随着FP10测试版的发布,Alternativa 3D的两个经典demo,也放出了FP10版本的demo.

Bunker Temple

http://blog.alternativaplatform.com/en/2008/05/16/alternativa-3d-flash-player-10-astro/

注意,测试需要把FlashPlay升级到Flash play 10版本。

测试了一下FP10版本的速度,全程已经修改为高品质运行,速度保持在30 fps,相当流畅。。期待API的放出啊。。。

Alternativa3D 官方宣布,将于5月底放出API。



23.04.2008 Alexander Karpovich

We’re glad to announce that we’re already working hard to make Alternativa3D availiable ’till the end of May. We’re planning to open SWC-library for non-commercial use, and also preparing licenses for commercial use in any projects. We’re also creating developers portal, useful support system and on-line documentation.

Thank you everybody! Your feedback gives us energy to move forward.


------------------------------------------------------------------------------

我们很高兴地宣布,我们已经努力使alternativa3d在5月底发布。我们正在规划,以开放的SWC库提供给非商业用户使用,并还准备授权作为商业用途,在任何项目。我们还创造官方网站,提供有力的支持系统和在线文档。

谢谢大家!您的反馈意见,会使我们向前迈进。


Flash 3D的天下即将来临。

  • 1