在平面上按住鼠标左键可以拉框:
原理是获取坐标的坐标,实时绘制一个立方体,这个例子是想说明:3d物体也没什么神奇的,就是定义几个顶点的
坐标就可以了,要想使物体形变,也可以通过修改坐标来实现。
主要代码如下:
/* 注册事件*/
addEventListener(MouseEvent.MOUSE_UP, removeDragListener);
addEventListener(MouseEvent.MOUSE_DOWN, setDragListener);
private function setDragListener(evt:MouseEvent=null):void
{
pt1=getMousePointOnFloor();//使用方法一
// var intersect:Number3D=getMousePointOnFloor2();//使用方法二
addEventListener(MouseEvent.MOUSE_MOVE, move3DMap);
}
private function move3DMap(evt:MouseEvent=null):void{
pt2=getMousePointOnFloor();//使用方法一
// cube.position=new Number3D((pt2.x+pt1.x)/2,(pt2.y+pt1.y)/2,0);
var v4:Vertex3D = cube.geometry.vertices[4];
var v5:Vertex3D = cube.geometry.vertices[5];
var v6:Vertex3D = cube.geometry.vertices[6];
var v7:Vertex3D = cube.geometry.vertices[7];
v6.x =pt2.x; v6.y =pt2.y ;
v5.x =pt1.x; v5.y =pt1.y ;
v4.x=v5.x; v4.y=v6.y;
v7.x=v6.x; v7.y=v5.y;
var v0:Vertex3D = cube.geometry.vertices[0];
var v1:Vertex3D = cube.geometry.vertices[1];
var v2:Vertex3D = cube.geometry.vertices[2];
var v3:Vertex3D = cube.geometry.vertices[3];
v0.x=v6.x;v0.y=v6.y;v0.z=-v6.z;
v1.x=v7.x;v1.y=v7.y;v1.z=-v7.z;
v2.x=v4.x;v2.y=v4.y;v2.z=-v4.z;
v3.x=v5.x;v3.y=v5.y;v3.z=-v5.z;
cube.visible=true;
}
private function removeDragListener(evt:MouseEvent=null):void
{
removeEventListener(MouseEvent.MOUSE_MOVE, move3DMap);
}