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

端午·西子湖畔

时间:6.7
地点:西湖
人物:三人行我必是徒
天气:雷阵雨
美女指数:下

从苏堤一端到另一端的感觉还是蛮遐意的,只是少了些许自由感,一切显得那么干净,那么人工雕琢,那么幽静优美,一副江南小家碧玉的感觉。
休息时分去逛逛还是挺不错的。

       

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

第一次触及Flasher聚会

在广州曾经错过3次多媒体聚会,没想到到杭州一个星期就能参加天地会的聚会。

貌似杭州现在的Flasher储备实力雄厚啊。见到黑羽大大,惭愧于自己很少逛论坛,所以其他的大大们都不熟识。

以后会尽量参加。。。

貌似。我看起来很老啊,偶这样铁打的80后居然会被人瞧出老人貌来。。555555555

端午节快乐


    粽·三俗

身批一件绿盈裳
内里白肉真稀罕
小棍插上沾白糖
三口两口入肚房

  

杭州印象

第一印象是干净,可怜我这个有轻微咽炎的同学,都舍不得往下水道吐痰。

第二印象是空气比广州好多了。在广州,不到方圆10公里能同时被30几座塔吊包围,说是透支生命一点也不夸张,不过从侧面也能看出广州的发展速度依然是全国前几名的。

第三印象是杭州的包子很大很好吃。一块钱的包子居然能做这么大,还有这么多瘦肉....比天河北一块钱的号称肉包子(小笼包大小)好吃多了。一个就能弄饱,两个得吃撑,要是能连吃三个给神仙偶都不做。

A3D 3 加载3DS模型

加载3ds文件.依然转成中文,因为用网站翻译,所以可能不太准确.主要注释在加载3d文件部分.

  1. package cn.com.xy50{
  2.  import alternativa.engine3d.controllers.CameraController;
  3.  import alternativa.engine3d.core.Camera3D;
  4.  import alternativa.engine3d.core.Mesh;
  5.  import alternativa.engine3d.core.Object3D;
  6.  import alternativa.engine3d.core.Scene3D;
  7.  import alternativa.engine3d.display.View;
  8.  import alternativa.engine3d.loaders.Loader3DS;
  9.  import alternativa.engine3d.materials.TextureMaterialPrecision;
  10.  import alternativa.utils.FPS;
  11.  import alternativa.utils.MeshUtils;
  12.  
  13.  import flash.display.Sprite;
  14.  import flash.display.StageAlign;
  15.  import flash.display.StageScaleMode;
  16.  import flash.events.Event;
  17.  
  18.  [SWF(backgroundColor="#000000", frameRate="100")]
  19.  
  20.  public class Test3 extends Sprite {
  21.  
  22.  private var scene:Scene3D;
  23.  private var view:View;
  24.  private var camera:Camera3D;
  25.  private var cameraController:CameraController;
  26.  private var loader:Loader3DS;
  27.  
  28.  /**
  29. *
  30. */
  31.  public function Test3() {
  32.  stage.scaleMode = StageScaleMode.NO_SCALE;
  33.  stage.align = StageAlign.TOP_LEFT;
  34.  
  35.  startLoading();
  36.  initScene();
  37.  initListeners();
  38.  
  39.  onResize(null);
  40.  }
  41.  
  42.  /**
  43. * Создание сцены и камеры.
  44. */
  45.  private function initScene():void {
  46.  scene = new Scene3D();
  47.  scene.root = new Object3D();
  48.  camera = new Camera3D();
  49.  camera.x = 0;
  50.  camera.y = -400;
  51.  camera.z = 0;
  52.  scene.root.addChild(camera);
  53.  view = new View();
  54.  addChild(view);
  55.  view.camera = camera;
  56.  
  57.  cameraController = new CameraController(stage);
  58.  cameraController.camera = camera;
  59.  cameraController.setDefaultBindings();
  60.  cameraController.checkCollisions = true;
  61.  cameraController.collisionRadius = 20;
  62.  cameraController.controlsEnabled = true;
  63.  cameraController.speed = 500;
  64.  
  65.  
  66.  FPS.init(stage);
  67.  }
  68.  
  69.  /**
  70. *
  71. */
  72.  private function onResize(e:Event):void {
  73.  view.width = stage.stageWidth;
  74.  view.height = stage.stageHeight;
  75.  }
  76.  
  77.  /**
  78. *
  79. */
  80.  private function onEnterFrame(e:Event):void {
  81.  cameraController.processInput();
  82.  scene.calculate();
  83.  }
  84.  
  85.  /**
  86. *
  87. */
  88.  private function initListeners():void {
  89.  stage.addEventListener(Event.RESIZE, onResize);
  90.  stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
  91.  }
  92.  
  93.  /**
  94. * 加载 3DS 格式的三维模型.
  95. */
  96.  private function startLoading():void {
  97.  loader = new Loader3DS(); // 3ds 加载类,继承自 EventDispatcher
  98.  loader.smooth = true; // 材质的平滑模式
  99.  loader.precision = TextureMaterialPrecision.HIGH; // 透视精确度,这里设置为高,可选值"BEST,HIGH,LOW,MEDIUM,NONE,VERY_HIGH,VERY_LOW"
  100.  loader.load("assets/me/djwolf.3ds"); // 加载模型
  101.  loader.addEventListener(Event.COMPLETE, onLoadingComplete); // 监听加载事件
  102.  }
  103.  
  104.  /**
  105. *
  106. */
  107.  private function onLoadingComplete(e:Event):void {
  108.  for (var o:* in loader.content.children) {
  109.  var object:Object3D = o;
  110.  cameraController.lookAt(object.coords);
  111.  weldVerticesAndFaces(object);
  112.  scene.root.addChild(object);
  113.  }
  114.  }
  115.  
  116.  /**
  117. * Объединение вершин и граней объекта.
  118. */
  119.  private function weldVerticesAndFaces(object:Object3D):void {
  120.  if (object is Mesh) {
  121.  MeshUtils.autoWeldVertices(Mesh(object), 0.01); // 连接网格物体的顶点有相同的坐标。
  122.  MeshUtils.autoWeldFaces(Mesh(object), 0.01, 0.001);
  123.  }
  124.  // Запуск процедуры для детей объекта
  125.  for (var key:* in object.children) {
  126.  weldVerticesAndFaces(key);
  127.  }
  128.  }
  129.  }
  130.  }




http://boxstr.com/files/2287538_lhiur/tt.rar
此连接包含code和3ds文件,建议编译环境Flex+FDT。

A3D 2 -- 坐标系统

A3D 的坐标系统和以前我所接触过的坐标方向有所区别,正负还是通过"右手法则"可以判断,但是3轴方向如图:


---------------------------------- fgx ------------------------------------

  1. package cn.com.xy50 {
  2.  import alternativa.engine3d.controllers.CameraController;
  3.  import alternativa.engine3d.core.Camera3D;
  4.  import alternativa.engine3d.core.Object3D;
  5.  import alternativa.engine3d.core.Scene3D;
  6.  import alternativa.engine3d.display.View;
  7.  import alternativa.engine3d.materials.FillMaterial;
  8.  import alternativa.engine3d.primitives.*;
  9.  import alternativa.utils.FPS;
  10.  
  11.  import flash.display.Sprite;
  12.  import flash.display.StageAlign;
  13.  import flash.display.StageScaleMode;
  14.  import flash.events.Event;
  15.  
  16.  public class Test1 extends Sprite {
  17.  
  18.  private var scene:Scene3D;
  19.  private var view:View;
  20.  private var camera:Camera3D;
  21.  private var cameraController:CameraController;
  22.  private var boxX:Box;
  23.  private var boxY:Box;
  24.  private var boxZ:Cone;
  25.  private var speed:Number=.1;
  26.  
  27.  public function Test1() {
  28.  stage.scaleMode = StageScaleMode.NO_SCALE;
  29.  stage.align = StageAlign.TOP_LEFT;
  30.  createScene();
  31.  }
  32.  
  33.  private function createScene():void
  34.  {
  35.  // 创造一个场景
  36.  scene = new Scene3D();
  37.  scene.root = new Object3D();
  38.  
  39.  boxX = new Box(100, 100, 100, 3, 3, 3);
  40.  boxX.setMaterialToAllSurfaces(new FillMaterial(0xFF0000));
  41.  scene.root.addChild(boxX);
  42.  boxX.x=-200;
  43.  
  44.  boxY = new Box(100, 100, 100, 3, 3, 3);
  45.  boxY.setMaterialToAllSurfaces(new FillMaterial(0x00FF00));
  46.  scene.root.addChild(boxY);
  47.  boxY.x