2009-07-23 51 views
2

我需要一些動作代碼來模擬Sprite的拖放,我想知道是否可以這樣做?如果是這樣的話?如何以編程方式在Flex中拖放一個Sprite?

例如,模擬一個Sprite的點擊,我可以用下面的代碼行來實現。

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

你能解釋一下這個是來做什麼的?這聽起來像你做錯了。 – zinovii 2009-07-23 03:55:03

+0

我正在編寫一些測試代碼來測試UI,我需要將指標(一個圖像)拖到指示條上。 – 2009-07-23 04:21:52

回答

3

要麼做這樣的事情:

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

您可以通過2個參數的方法的startDrag,首先是鎖定到中心一個布爾值,第二個是一個矩形對象的邊界點。

而對於更受控制的行爲,你可以做這樣的事情,而不是:

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

(沒有測試代碼,所以可能會有一些小的語法錯誤或東西)

0

對於AIR Sprite Class有nativeDragStart,nativeDragOver,nativeDragEnter,nativeDragExit,nativeDragUpdate。所以你可以派遣這些事件。

對於Flex,對象必須是UIComponent的實例。

相關問題