2009-07-23 17 views
2

Ich brauche ein ActionScript-Code, um das Ziehen und Ablegen eines Sprites zu simulieren. Ich habe mich gefragt, ob das möglich ist. wenn es wie ist?Wie programmiere ich einen Sprite per Drag & Drop in Flex?

Zum Beispiel, um einen Klick auf einen Sprite zu simulieren kann ich mit der folgenden Codezeile erreichen.

sprite.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); 
+0

Können Sie erklären, wofür ist das? Es klingt, als würdest du etwas falsch machen. – zinovii

+0

Ich schreibe einen Testcode, um die Benutzeroberfläche zu testen, ich muss den Indikator (ein Bild) auf eine Anzeigeleiste ziehen. –

+0

Ich denke, es ist seltsam, dass Sprite hat startDrag() und stopDrag() -Methoden, aber kein Ereignis ausgelöst. Es wäre schön, zumindest DragStart- und DragComplete-Events für Sprite zu haben. – zinovii

Antwort

3

Entweder so etwas tun:

mySprite.addEventListener("mouseDown", mouseDownHandler); 
stage.addEventListener("mouseUp", mouseUpHandler); 
protected function mouseDownHandler (e:MouseEvent):void{ 
    e.target.startDrag(); 
} 
protected function mouseDownHandler (e:MouseEvent):void{ 
    e.target.stopDrag(); 
} 

Sie 2 Argumente an die Methode start passieren können, ist die erste ein boolean zum Zentrum zu sperren, der zweite ist ein Rechteck-Objekt für Boundary-Punkte.

Und für ein kontrolliertes Verhalten Sie so etwas wie dies stattdessen tun können:

mySprite.addEventListener("mouseDown", 
mouseDownHandler); 
stage.addEventListener("mouseUp", mouseUpHandler); 
protected function mouseDownHandler (e:MouseEvent):void{ 
    stage.addEventListener("mouseMove", 
mouseMoveHandler); 
} 
protected function mouseDownHandler (e:MouseEvent):void{ 
    stage.removeEventListener("mouseMove", 
mouseMoveHandler); 
} 
protected function mouseMovehandler(e:MouseEvent):void{ 
    mySprite.x=mouseX; 
    mySprite.y=mouseY; 
} 

(haben Sie den Code so nicht getestet könnte es einige kleine Syntax-Fehler oder etwas sein)

+0

Ich weiß, das ist wie fünf Jahre später, aber Sie haben vielleicht vergessen, den zweiten 'mouseDownHandler' zu' mouseUpHandler' zu bearbeiten – Vanlalhriata

0

Für AIR Sprite Class hat native, nativeDragOver-, native, native, native. So können Sie diese Ereignisse versenden.

Für Flex muss Objekt eine Instanz von UIComponent sein.

Verwandte Themen