2011-01-29 14 views
0

私はas3でドラッグしたいオブジェクトを持っていますが、そのオブジェクトはムービークリップやスプライトではドラッグできません。誰がなぜこれがどのように私はそれを解決することができます知っていますか?私はスプライトとしてキャストしようとしましたが、それは動作しません。as3のオブジェクトをドラッグする

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

のでe.currentTargetは私に[object Order]を与え、私はスプライトとしてそれをキャスト。

誰でもどのように解決できるか教えてください。

+0

を独自のソリューションを実装するだろうか? –

+0

'Order'クラスのコードを表示できますか? – Taurayi

答えて

1

あなたはあなた自身の質問に答えました。 startDragを使用するには、オブジェクトが少なくともSpriteである必要があります。 OrderクラスがSpriteを拡張しない場合、イベントcurrentTargetをSpriteとしてキャストすることはあまり効果がありません。

あればあなたは、あなたの `Order`クラスがどのようなタイプを拡張しない...この方法は、デバッグが容易であり得る

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

私はフラッシュで作成したものですが、ムービークリップに変換してエクスポートしました。しかし、flashbuilderでそれをトレースすると、ムービークリップ – vincent

+0

の代わりに[object order]と表示されます。その場合は、MovieClipが拡張されています。問題は別の場所にある可能性があります。あなたはMouseMoveイベントリスナーを実装して、結果をトレースすることができます... – PatrickS

関連する問題