2011-01-29 49 views
0

我有一个对象,我想在as3中拖动,但因为它的对象而不是一个movieClip或雪碧我不能拖动它。有谁知道这是为什么,我如何解决它?我试图把它作为一个雪碧,但它不起作用。在as3中拖动一个对象

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

所以e.currentTarget给我[object Order],我投它作为一个雪碧。

任何人都可以帮助我如何解决它?

+0

什么类型的贵`Order`类扩展,如果有的话? – 2011-01-29 21:10:15

+0

你能为你展示`Order`类的代码吗? – Taurayi 2011-01-29 21:56:04

回答

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); 
      } 
     } 
    }