Have you explored away3d.tools.utils.Drag3D?

On Aug 20, 2:27 pm, Bobby <[email protected]> wrote:
> Dear Team,
>              I have developed a dragging application. There is a small
> error that I cannot fix however. When I drag the plane very fast the
> mouse does not stay with the confines of the object like the startDrag
> and stopDrag functions available in AS3. As you already know
> startDrag and stopDrag functions are not available in Away-3D.Can you
> tell me how to fix the problem.
>
> The two classes used are show. A class that uses DraggingClass is
> given after the code od DraggingClass
>
> package
> {
>         import away3d.cameras.*;
>         import away3d.containers.*;
>         import away3d.core.base.Object3D;
>         import away3d.events.MouseEvent3D;
>
>         import flash.display.*;
>         import flash.events.*;
>
>         public class DraggingClass extends Sprite
>         {
>                 protected var _camera : HoverCamera3D;
>                 protected var _view : View3D;
>                 protected var mouseDown:uint = 0;
>                 protected var overPlane:uint = 0;//Used to check whetehr 
> mouse is
> over the object.
>
>         public function DraggingClass()
>         {
>                 super();
>                 _createView();
>         }
>
>         public function onMouseDown(object:Object3D):void
>         {
>                 mouseDown = 1;
>                 object.addEventListener(MouseEvent3D.MOUSE_MOVE,onMouseMove)
>                 object.addEventListener(MouseEvent3D.MOUSE_OUT,onMouseOut)
>         }
>
>         public function onMouseMove(eve : MouseEvent3D) : void
>         {
>
>                 var obj : Object3D = eve.object;
>
>                 if(mouseDown == 1 && overPlane == 1)
>                 {
>                 obj.x = eve.sceneX;
>                 obj.y = eve.sceneY;
>
>                 }
>
>                 obj.addEventListener(MouseEvent3D.MOUSE_UP,onMouseUp)
>                 obj.addEventListener(MouseEvent3D.MOUSE_OUT,onMouseOut)
>
>         }
>
>         public function onMouseOut(eve:MouseEvent3D):void
>         {
>                 var obj : Object3D = eve.object;
>                 obj.useHandCursor = false;
>                 overPlane = 0;
>                 mouseDown = 0;
>         }
>
>         public function onMouseUp(eve:MouseEvent3D):void
>         {
>                 mouseDown = 0;
>
>         }
>
>         public function onMouseOver(object:Object3D):void
>         {
>                 overPlane = 1;
>                 object.useHandCursor = true;
>                 object.addEventListener(MouseEvent3D.MOUSE_OUT,onMouseOut)
>                 trace("Over the plane");
>         }
>
>         protected function _createView() : void
>         {
>
>                 _camera = new HoverCamera3D();
>                 _camera.distance = 1000;
>                 _camera.tiltAngle = 10;
>                 _camera.panAngle = 180;
>
>                 _view = new View3D();
>                 _view.x = 400;
>                 _view.y = 300;
>                 _view.camera = _camera;
>                 addChild(_view);
>                 addEventListener(Event.ENTER_FRAME, _onEnterFrame);
>         }
>
>         protected function _onEnterFrame(ev : Event) : void
>         {
>
>                 _camera.hover();
>                 _view.render();
>         }
>
>   }
>
> }
>
> A class that creates a plane. An instance of DraggingClass is created
> and used to access the functions in DraggingClass.
>
> package
> {
>                 import away3d.cameras.*;
>                 import away3d.containers.*;
>                 import away3d.core.base.Object3D;
>                 import away3d.events.MouseEvent3D;
>                 import away3d.primitives.Plane;
>
>                 import flash.display.*;
>                 import flash.events.*;
>
>                 public class DragPlane extends Sprite
>                 {
>                         protected var drag:DraggingClass = new 
> DraggingClass();
>                         protected var _camera : HoverCamera3D;
>                         protected var _view : View3D;
>                         protected var plane:Plane;
>
>                 public function DragPlane()
>                 {
>                         super();
>                         _createView();
>                         _createScene();
>
>                 }
>
>                 protected function _createView() : void
>                 {
>                         _camera = new HoverCamera3D();
>                         _camera.distance = 1000;
>                         _camera.tiltAngle = 10;
>                         _camera.panAngle = 160;
>
>                         _view = new View3D();
>                         _view.x = 400;
>                         _view.y = 300;
>                         _view.camera = _camera;
>                         addChild(_view);
>                         addEventListener(Event.ENTER_FRAME, _onEnterFrame);
>                 }
>
>                 protected function _onEnterFrame(ev:Event) : void
>                 {
>                         //_camera.panAngle += (stage.mouseX - 
> stage.stageWidth/2) / 100;
>                         _camera.hover();
>                         _view.render();
>                 }
>
>                 protected function _createScene():void
>                 {
>
>                         var plane : Plane = new Plane();
>                         plane.width +=100;
>                         plane.yUp = false;
>                         _view.scene.addChild(plane);
>
>                         
> plane.addEventListener(MouseEvent3D.MOUSE_DOWN,_onMouseDown);
>                         
> plane.addEventListener(MouseEvent3D.MOUSE_OVER,_mouseOver)
>                 }
>
>                 protected function _onMouseDown(eve:MouseEvent3D):void
>                 {
>
>                         var obj1 : Object3D = eve.object;
>                         drag.onMouseDown(obj1);
>                 }
>
>                 protected function _mouseOver(eve:MouseEvent3D):void
>                 {
>
>                         var obj : Object3D = eve.object;
>                         drag.onMouseOver(obj);
>                 }
>
>   }
>
>
>
> }

Reply via email to