HELLO AWAY3D 4.0 ALPHA

研究了一段时间的Unity3D,觉得这货不靠谱。不是说引擎不好,而是已经完全脱离flash的范畴了。其代码是采用js的。唯一和flash有联系的部分就是可以输出成swf文件罢了。

于是打算研究下away3d. 嘛,手头上的资料都是away3D 3.6 的。4.0的资料除了官方 api 和 demo外 基本就没有了,研究的非常吃力。 4.0 和 3.6 的变化非常大,包括 camera3D 就少了 target,focus,zoom 。

放1个立方体旋转的demo,左侧立方体跟随鼠标旋转,右侧立方体随机旋转。

本demo需要 flash player 11.0.0+ 如果你的版本为 10.0.0+ 的话,是无法观看的。

之后是源码部分:


package
{
import away3d.containers.Scene3D;
import away3d.containers.View3D;
import away3d.debug.Trident;
import away3d.lights.DirectionalLight;;
import away3d.materials.BitmapMaterial;
import away3d.materials.ColorMaterial;
import away3d.primitives.Cube;

import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Rectangle;

[SWF(width="500",height="500")]
public class away3D extends Sprite
{
[Embed(source="../Embed/cover.jpg")]
private var _cover:Class;

protected var _view :View3D;
protected var _cube1 :Cube;
protected var _cube2 :Cube;

public function away3D()
{
_createView();
_createScene();
_createCamera();
}

protected function _createView() : void
{
// Create view and add it to the stage
_view = new View3D();
_view.antiAlias=4;
addChild(_view);

addEventListener(Event.ENTER_FRAME, _onEnterFrame);
}

protected function _createScene() : void
{
// Create a new scene containing a trident and two cubes
var scene : Scene3D = new Scene3D();
var trident : Trident = new Trident(200, true);
_cube1 = new Cube();
_cube1.x = -150;
_cube1.material = new ColorMaterial(0xFF0000,.3);
_cube1.showBounds=true;

var light:DirectionalLight = new DirectionalLight();
light.x = -1000;
light.y = 1000;
light.z = -1000;

var material : BitmapMaterial = new BitmapMaterial(new _cover().bitmapData);
material.lights=[light];

_cube2 = new Cube(material,200,200,200);
_cube2.x = 100;
_cube2.tile6=false;
_cube2.showBounds=true;

scene.addChild(light);
scene.addChild(trident);
scene.addChild(_cube1);
scene.addChild(_cube2);

//Assign the new scene to the view
_view.scene = scene;
}

protected function _createCamera() : void
{
}

protected function _onEnterFrame(ev : Event) : void
{
_view.render();
}
}
}


package
{
import away3d.cameras.Camera3D;
import away3d.containers.ObjectContainer3D;
import away3d.containers.Scene3D;
import away3d.debug.Trident;
import away3d.primitives.Sphere;

import flash.events.Event;
import flash.geom.Vector3D;
import flash.utils.getTimer;

[SWF(width="500",height="500",frameRate="60")]
public class ViewportClipping extends away3D
{

private var _perndulum:ObjectContainer3D;
public function ViewportClipping()
{
_createView();
_createScene();
_createCamera();
}

protected override function _onEnterFrame(ev:Event):void
{
_cube1.rotationY=stage.mouseX-stage.stageWidth/2;
_cube1.rotationX=stage.mouseY-stage.stageHeight/2;
_cube2.rotationY--;
_cube2.rotationX--;
_view.render();
}
}
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注