在as3中拖动对象

时间:2011-01-29 19:49:31

标签: actionscript-3

我有一个对象,我想拖入as3,但因为它的对象而不是movieClip或Sprite我无法拖动它。有谁知道这是为什么以及如何解决它?我试图把它作为精灵投射,但它不起作用。

var order:Sprite = e.currentTarget as Sprite;
order.startDrag();

所以e.currentTarget给了我[object Order],我把它作为精灵投射。

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您已经回答了自己的问题。要使用startDrag,您的对象必须至少是一个Sprite。如果Order类没有扩展Sprite,那么将事件currentTarget作为Sprite强制转换将无法实现。

您可以实施自己的解决方案,这种方式可能更容易调试......

    package
    {
         import flash.display.MovieClip;
         import flash.events.*;

         public class Order extends MovieClip
         {
             public function Order()
             {
                 this.addEventListener( MouseEvent.MOUSE_DOWN , mouseDownHandler );

                 if( stage != null )
                    stage.addEventListener( MouseEvent.MOUSE_DOWN , mouseDownHandler );
             }

             private function mouseDownHandler ( event:MouseEvent ):void
             {
                 if( stage != null )
                    stage.addEventListener( MouseEvent.MOUSE_MOVE , mouseMoveHandler );
             }

             private function mouseMoveHandler ( event:MouseEvent ):void
             {
                  this.x = mouseX;
                  this.y = mouseY;
             }

             private function mouseUpHandler ( event:MouseEvent ):void
             {
                 stage.removeEventListener( MouseEvent.MOUSE_MOVE , mouseMoveHandler );
             }
         }
    }