Archive for 12月, 2009

新日式美學家電-amadana

星期二, 12月 29th, 2009

由日本知名的建築師、室內設計師鄭秀和所帶領的amadana,有著「新日式美學家電」的美稱。amadana所出產的家電,簡約設計中總是夾帶著日本傳統的材質與風格,並且不留痕跡的與鋼鐵、冰冷科技融合一起,使得所設計出的家電總是能流露出溫暖感。然而這種嚴
謹的品牌卻有KUSO的表現,選購amadana的產品時,會附上一個超爆笑的說明書,KUSO到讓你完全不知此物為何物。
這次所介紹的這台咖啡機,除了外觀設計簡約有型、使用原木之外,一些小設計也頗具人性化和親和力,例如水箱可以提著走、活性炭過
濾淨水等功能。當然,在滿意這台咖啡機外型設計與功能之後,還是要來看看它KUSO的使用說明書:不能拿來當刨冰機、咖啡壺不能拿
來洗澡沖水用…怎樣,是否覺得這家公司既有設計美感卻又搞怪有趣,好像正反兩面和諧一體呢。想買一台來使用看看嗎?

好玩的说明书

minimalcomps组件以及动态改变sprite或者movieclip的注册点

星期一, 12月 28th, 2009

minimalcompsKeith Peters开发的一个flex/flash的控制组件包括一些常用的比如按钮,拖动条,配色板凳等。
改变动态注册点的workaround是Oscar Trellesdarronschall的as2版本的基础上改进的.能将动态生成的mc的注册点用setRegistration()改变,并赋予mc新的属性比如x2,y2,scaleX2,scaleY2…

(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player.)

package {
 import flash.display.*;
 import flash.events.*;
 import caurina.transitions.Tweener;
 import com.bit101.components.HUISlider;
 public class Minimalslider extends Sprite {
  private var square:DynamicMovie;
  private var fov:HUISlider;
  public function Minimalslider():void {

   square = new DynamicMovie();
   addChild(square);
   
   
   square.graphics.lineStyle(1,0x00ff00);
   square.graphics.beginFill(0x00cbff);
   square.graphics.drawRect(0,0,100,100);
   square.graphics.endFill();
   square.setRegistration(50,50);  
   square.x2=200;
   square.y2=200;
   fov=new HUISlider(this,1,0,'FOV',onChange);
   fov.minimum=1;
   fov.maximum=100;
   fov.value=1;
   addChildAt(fov,1);
  }

  private function onChange(event:Event):void {
   Tweener.addTween(square, {scaleX2:fov.value/100, scaleY2:fov.value/100, transition:"easeoutelastic", time:1});






  }

 }

}

InteractiveScene3DEvent和collada

星期三, 12月 9th, 2009

所有papervision里面primitives比如像plane,cube,sphere都可以直接应用InteractiveScene3DEvent这个事件,InteractiveScene3DEvent能使3D场景中的物体产生类似MC一样的点击事件。
但是导入的collada(dae)模型去不行,通过google和自己研究。其实要加入FileLoadEvent.LOAD_COMPLETE这个事件告诉flash模型已经导入然后通过getChildByName得到模型的节点,再在上面加入click事件等。

package {
 import flash.display.Bitmap;
 import flash.events.MouseEvent;
 import flash.utils.ByteArray;
 import flash.net.URLRequest;
 import flash.display.Loader;
 import flash.display.BitmapData;
 import flash.events.Event;

 import org.papervision3d.events.InteractiveScene3DEvent;
 import org.papervision3d.materials.BitmapColorMaterial;
 import flash.display.Sprite;
 import flash.events.Event;
 import org.papervision3d.cameras.Camera3D;
 import org.papervision3d.objects.primitives.Plane;
 import org.papervision3d.render.BasicRenderEngine;
 import org.papervision3d.scenes.Scene3D;
 import org.papervision3d.view.Viewport3D;
 import org.papervision3d.objects.parsers.DAE;
 import org.papervision3d.events.FileLoadEvent;
 import org.papervision3d.objects.DisplayObject3D;
 import org.papervision3d.core.utils.Mouse3D;
 import flash.geom.Point;


 public class InteractiveCollada extends Sprite {
  private var viewport:Viewport3D;
  private var scene:Scene3D;
  private var camera:Camera3D;
  private var vMouse:Mouse3D;
  private var renderer:BasicRenderEngine;
  private var material:BitmapColorMaterial;
  public function InteractiveCollada() {
   init();
  }

  private function init():void {
   initPapervision();   
   initObjects();
   initListeners();
  }
  private function initPapervision():void {
   
   viewport=new Viewport3D(640,480,false,true);
   addChild( viewport );

   scene = new Scene3D();
   camera = new Camera3D();

   renderer = new BasicRenderEngine();
  }
  private function initObjects():void {


   Mouse3D.enabled=true;
   vMouse=viewport.interactiveSceneManager.mouse3D;


   ////
   var obj_dae:DAE = new DAE();

   obj_dae.load("c.DAE");
   obj_dae.scale=40;

   scene.addChild(obj_dae);
   obj_dae.addEventListener(FileLoadEvent.LOAD_COMPLETE, compCollada);
   function compCollada(event:Event):void {
    
    trace("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
    trace("obj_dae.materials"+obj_dae.materials)
    obj_dae.materials.getMaterialByName("cMaterial").interactive=true;
    
    var dae_rootNode:DisplayObject3D=obj_dae.getChildByName("COLLADA_Scene");
    var targetMesh:DisplayObject3D=dae_rootNode.getChildByName("C-Ext01");
    trace("targetMesh"+targetMesh);
    
    targetMesh.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, mouseClick);

   }



  }
  private function mouseClick(e:InteractiveScene3DEvent):void {
   trace("click");
   var axis:Point=new Point(vMouse.x,vMouse.y);
   trace(axis.x + " / " + axis.y);
  }

  private function initListeners():void {
   

   addEventListener( Event.ENTER_FRAME, onEnterFrame );
  }
  private function onEnterFrame( e:Event ):void {
   
   renderer.renderScene( scene, camera, viewport );
  }





 }


}

下面这个是普通的plane的效果
(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player.)

package {
 import org.papervision3d.events.InteractiveScene3DEvent;
 import org.papervision3d.materials.BitmapColorMaterial;
 import flash.display.Sprite;
 import flash.events.Event;
 import org.papervision3d.cameras.Camera3D;
 import org.papervision3d.objects.primitives.Plane;
 import org.papervision3d.render.BasicRenderEngine;
 import org.papervision3d.scenes.Scene3D;
 import org.papervision3d.view.Viewport3D;

 public class InteractiveScene3DEventOBJECT_PRESS extends Sprite {
  private var viewport:Viewport3D;
  private var scene:Scene3D;
  private var camera:Camera3D;

  private var renderer:BasicRenderEngine;

  private var material:BitmapColorMaterial;

  private var plane:Plane;

  public function InteractiveScene3DEventOBJECT_PRESS() {
   init();
  }

  private function init():void {
   initPapervision();
   initMaterials();
   initObjects();
   initListeners();
  }

  private function initPapervision():void {
   
   viewport=new Viewport3D(300,300,false,true);
   addChild( viewport );

   scene = new Scene3D();
   camera = new Camera3D();

   renderer = new BasicRenderEngine();
  }

  private function initMaterials():void {
   material=new BitmapColorMaterial(0xcc0000);
   material.doubleSided=true;
   
   material.interactive=true;
  }

  private function initObjects():void {
   plane=new Plane(material,500,500);
   scene.addChild( plane );
  }

  private function initListeners():void {
   
   plane.addEventListener( InteractiveScene3DEvent.OBJECT_PRESS, objectPress );

   addEventListener( Event.ENTER_FRAME, onEnterFrame );
  }

  
  private function objectPress( e:InteractiveScene3DEvent ):void {
   
   plane.rotationX+=Math.random()*10
   plane.rotationZ+=Math.random()*10
  }

  private function onEnterFrame( e:Event ):void {
   plane.rotationY+=2;
   renderer.renderScene( scene, camera, viewport );
  }
 }
}

asmod,paperversion,shadowcaster三维实例

星期三, 12月 2nd, 2009

(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player.)