forked from: flash on 2010-12-2
♥0 |
Line 65 |
Modified 2010-12-06 10:13:44 |
MIT License
archived:2017-03-20 12:31:03
ActionScript3 source code
/**
* Copyright shapevent ( http://wonderfl.net/user/shapevent )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/6ump
*/
// forked from starlizhi's flash on 2010-12-2
package {
import away3d.cameras.HoverCamera3D;
import away3d.containers.ObjectContainer3D;
import away3d.containers.View3D;
import away3d.core.base.Face;
import away3d.core.base.Mesh;
import away3d.core.base.Vertex;
import flash.display.Sprite;
import flash.events.Event;
/**
* help me. why sort wrong?
*/
public class Test1 extends Sprite {
private var view:View3D;
private var mesh:Mesh;
private var obj:ObjectContainer3D;
public function Test1(){
view = new View3D();
view.x = stage.stageWidth / 2;
view.y = stage.stageHeight / 2;
addChild(view);
obj = new ObjectContainer3D();
mesh = new Mesh();
obj.addChild(mesh);
var data:Array = [[[0, 0], [0, 1]], [[0, 1], [1, 0]], [[1, 0], [0, 0]]];
for each (var l:Array in data){
var p1:Array = l[0];
var p2:Array = l[1];
addFace(p1, p2);
}
mesh.bothsides = true;
mesh.x = -mesh.objectWidth / 2;
mesh.y = -mesh.objectHeight / 2;
mesh.z = -mesh.objectDepth / 2;
view.scene.addChild(obj);
addEventListener(Event.ENTER_FRAME, update);
camera = new HoverCamera3D();
camera.distance = 1000;
camera.tiltAngle = 10;
camera.panAngle = 180;
view.camera = camera;
}
private var vs:Array = [];
private var camera:HoverCamera3D;
private function addFace(p1:Array, p2:Array):void {
var cellW:Number = 100;
var cellH:Number = 100;
mesh.addFace(new Face(getV(p1[0] * cellW, 0, p1[1] * cellW), getV(p1[0] * cellW, cellH, p1[1] * cellW), getV(p2[0] * cellW, 0, p2[1] * cellW)));
mesh.addFace(new Face(getV(p2[0] * cellW, 0, p2[1] * cellW), getV(p1[0] * cellW, cellH, p1[1] * cellW), getV(p2[0] * cellW, cellH, p2[1] * cellW)));
}
public function getV(x:Number, y:Number, z:Number):Vertex {
for each (var v:Vertex in vs){
if (v.x == x && v.y == y && v.z == z){
return v;
}
}
v = new Vertex(x, y, z);
vs.push(v);
return v;
}
private function update(e:Event):void {
view.render();
camera.panAngle = (stage.mouseX - stage.stageWidth / 2) / 5;
camera.tiltAngle = (stage.mouseY - stage.stageHeight / 2) / 5;
camera.hover();
}
}
}