首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

papervision3d拖拽球体

2012-11-21 
papervision3d拖拽圆球代码如下:?package{import flash.events.Eventimport flash.events.MouseEvent?im

papervision3d拖拽圆球

papervision3d拖拽球体

代码如下:

?

package{import flash.events.Event;import flash.events.MouseEvent;?import org.papervision3d.core.geom.renderables.Vertex3D;import org.papervision3d.core.math.Number3D;import org.papervision3d.core.math.Plane3D;import org.papervision3d.events.InteractiveScene3DEvent;import org.papervision3d.lights.PointLight3D;import org.papervision3d.materials.shadematerials.FlatShadeMaterial;import org.papervision3d.objects.primitives.Sphere;import org.papervision3d.view.BasicView;?[SWF(width="640", height="480", backgroundColor="#000000", frameRate="60")]public class DraggingASphere extends BasicView{private const NUM_SPHERES:int = 11;//声明球的个数private var planeToDragOn:Plane3D;private var currentSphere:Sphere;?private var light:PointLight3D;?public function DraggingASphere(){viewport.interactive = true;?camera.y = 400;?light = new PointLight3D(true);scene.addChild(light);?for(var i:int = 0; i < NUM_SPHERES; i++){var material:FlatShadeMaterial = new 
                                                                           FlatShadeMaterial(light, 0xeeeeee, 0x2d2d2d, 10);material.interactive = true;var sphere:Sphere = new Sphere(material);sphere.x = (i - NUM_SPHERES/2) * 200;?scene.addChild(sphere);?sphere.addEventListener(InteractiveScene3DEvent.
                                                                                                OBJECT_PRESS, objectPressHandler);stage.addEventListener(MouseEvent.
                                                                                                MOUSE_UP, mouseUpHandler);}?var up:Number3D = new Number3D(0, 1, 0);planeToDragOn = new Plane3D(up, new Number3D(0,0,0));?startRendering(); }?private function objectPressHandler(event:InteractiveScene3DEvent):void{currentSphere = event.displayObject3D as Sphere;}?private function mouseUpHandler(event:MouseEvent):void{currentSphere = null;}override protected function onRenderTick(event:Event=null):void{var ray:Number3D = camera.unproject
                                         (viewport.containerSprite.mouseX, viewport.containerSprite.mouseY);ray = Number3D.add(ray, camera.position);?var cameraVertex3D:Vertex3D = new Vertex3D
                                                                                                    (camera.x, camera.y, camera.z);var rayVertex3D:Vertex3D = new Vertex3D(ray.x, ray.y, ray.z);?var intersectPoint:Vertex3D = planeToDragOn.getIntersectionLine
                                                                                              (cameraVertex3D, rayVertex3D);?if(currentSphere){currentSphere.x = intersectPoint.x;currentSphere.y = intersectPoint.y;currentSphere.z = intersectPoint.z;}light.x = intersectPoint.x;light.y = intersectPoint.y + 100;light.z = intersectPoint.z;?renderer.renderScene(scene, camera, viewport);}}}

?

(来自papervision3d官方网)

?

热点排行