2009-04-27 10 views
0

Ich möchte ein Bild laden mit Loader Bühne und dann möchte ich es ziehbar machen. Das Laden erfolgt durch Auswahl aus der Liste, wie unten gezeigt, aber ich habe keine Ahnung von Drag and Drop in AS3, kann mir jemand helfen? Ich möchte es so einfach wie möglich machen.Laden von geladenem Bild ziehbaren Actionscript 3

Hier ist mein Code-Bild zu laden:

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

Antwort

2

yuku in der richtigen Richtung ging, aber was wollen Sie zu tun ist, um den Inhalt des loader zu bekommen, die eigentlich der Clip ist, die in so etwas wie

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

} 
geladen wird.
+2

hmmm, scheint Sinn zu ergeben, aber es gibt mir einen Fehler, weil Inhalt des Loaders kein Movieclip ist, sondern eine Bitmap. Kann ich es irgendwie konvertieren? Und bitte repariere die redundante linke Maustaste vor MouseEvent.MOUSE_UP, nur um niemanden zu verwirren;) – Dungeo

+1

Wenn das die Basis ist, dann möchtest du diese Bitmap mit der Sprite.graphics Eigenschaft und der Graphics.beginBitmapFill() Methode http auf einen MovieClip zeichnen : //livedocs.adobe.com/flex/3/langref/index.html –

+0

ich denke, ich habe den Punkt, aber immer noch bin ich mir nicht sicher, wie man es mit loader, könnten Sie bitte erklären es mir genauer? Sorry, ich bin ein Anfänger :-) – Dungeo

0

Loader ist eine Unterklasse von Sprite, so dass Sie start und stopdrag Methode verwenden können.

Zum Beispiel:

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

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

im fürchtet, es ist nicht wegen Adobe Dokumentation Vererbung: \t Loader -> Display -> Interactive -> Display -> Eventdispatcher -> Objekt und Ihr Code gibt mir diese: Error # 1069: Die Eigenschaft stopDrag wurde nicht in flash.display.Loader gefunden und es gibt keinen Standardwert. – Dungeo

+0

Sorry, ich war verwirrt zwischen DisplayObject und Sprite. Hoffe, dass James Hay's Antwort dir hilft :) – yuku

1

Verwenden Sie den folgenden Code ein:

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

Dies ist der einfachste Weg, um mich ...

/* 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(); 
}