2009-04-27 14 views
0

ローダーを使用してイメージをステージに読み込み、ドラッグ可能にしたいと考えています。読み込みは、下の図のようにタイルリストから選択して行いますが、AS3のドラッグアンドドロップについては何の助けもありません。私はできるだけシンプルにしたい。ここで読み込み中のイメージをドラッグ可能にするActionScript 3

は、画像をロードするための私のコードです:

var charge1:Loader = new Loader(); 
addChild(charge1); 
this.addChildAt(charge1, getChildIndex(bg)); 
charge1.x = 280; 
charge1.y = 270; 

... 

function setCharge1(e:Event):void{ 
    trace(e.target.selectedItem.source); 

    this.charge1.load(new URLRequest(e.target.selectedItem.source));  
    this.charge1.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete); 
} 

答えて

2

ゆくが、右のラインに沿って起こっていたが、何がやりたいことは、実際にロードされたクリップで取得されたLoaderInfoの内容がどの

private function onComplete(event : Event) : void 
{ 
    var loadedClip : MovieClip = LoaderInfo(event.target).content; 

    loadedClip.addEventListener(MouseEvent.MOUSE_DOWN, function(event : MouseEvent) 
    { 
    loadedClip.startDrag(); 
    }); 

    stage.addEventListener(MouseEvent.MOUSE_UP, function(event : MouseEvent) 
    { 
     loadedClip.stopDrag(); 
    }); 

} 
のようなもの。
+2

hmmm、意味があるようですが、ローダーのコンテンツはムービークリップではなくビットマップなので、エラーです。私は何とかそれを変換することはできますか? MouseEvent.MOUSE_UPの前に冗長なleftparenを修正してください。誰かを混乱させないようにしてください; – Dungeo

+1

これがベースの場合は、Sprite.graphicsプロパティを使用してGraphics.beginBitmapFill()メソッドhttpを使用してムービークリップにビットマップを描画します://livedocs.adobe.com/flex/3/langref/index.html –

+0

私はポイントを持っていると思うが、それでもローダーに参加する方法がわからないので、もっと正確に説明してもらえますか?申し訳ありませんが、私は初心者です:-) – Dungeo

0

ローダーは、Spriteのサブクラスであるので、あなたはstartDragをには、stopDragメソッドを使用することができます。例えば

charge1.addEventListener("mouseDown", function() { 
    charge1.startDrag(); 
}); 

stage.addEventListener("mouseUp", function() { 
    charge1.stopDrag(); 
}); 
+0

それが原因アドビドキュメント の継承には、ない恐れてイム: エラー#1069:\tローダー - >のDisplayObjectContainer - >のInteractiveObject - >のDisplayObject - - >のEventDispatcher>オブジェクト とあなたのコードは私にこれを与えます: flash.display.LoaderでプロパティstopDragが見つかりません。デフォルト値はありません。 – Dungeo

+0

申し訳ありませんが、私はDisplayObjectとSpriteを混同していました。 James Hayの答えがあなたを助けてくれることを願っています:) – yuku

1

次のコードを使用します。これは、私には最も簡単な方法です

this.addEventListener(MouseEvent.MOUSE_DOWN, dragMovie); 
this.addEventListener(MouseEvent.MOUSE_UP, dropMovie); 
this.buttonMode = true; 
private function dragMovie(event:MouseEvent):void 
{ 
    this.startDrag(); 
} 

private function dropMovie(event:MouseEvent):void 
{ 
    this.stopDrag(); 
} 
2

を...

/* Load Image */ 

var myLoader:Loader = new Loader(); 
imageContainer.addChild(myLoader); 
var url:URLRequest = new URLRequest("photo.jpg"); 
myLoader.load(url); 

/* Drag and Drop */ 

imageContainer.addEventListener(MouseEvent.MOUSE_DOWN, pickUp); 
function pickUp(event:MouseEvent):void 
{ 
imageContainer.startDrag(); 
} 
stage.addEventListener(MouseEvent.MOUSE_UP, dopIt); 

function dopIt(event:MouseEvent):void 
{ 
imageContainer.stopDrag(); 
} 
関連する問題