2010-03-11 124 views

回答

1

Flash版本

var s:Sprite = new Sprite(); 
s.x = 20; 
s.graphics.beginFill(0xFF0000); 
s.graphics.drawRect(0,0,20,20); 
addChild(s); 

stage.addEventListener(MouseEvent.MOUSE_MOVE,moveSprite); 

function moveSprite(e:MouseEvent):void 
{ 
    s.y = e.localY; 
} 

柔性版

<mx:Canvas width="100" height="100"> 
      <mx:mouseMove> 
        <![CDATA[ 
         s.y = event.localY; 
        ]]> 
       </mx:mouseMove> 
      <mx:Canvas id="s" backgroundColor="#ff0000" width="20" height="20"/> 
     </mx:Canvas> 

每一種可以粘貼在和對你說的話。它會創建一個與鼠標垂直相同但水平固定的20x20紅色框。您的鼠標必須位於包含的畫布內的Flex版本。

+0

太好了,謝謝! – 2010-03-12 04:52:40

1
addEventListener(MouseEvent.CLICK, clickHandler); 
function clickHandler(e:MouseEvent):void{ 
    mySprite.y += amount; 
} 
+0

對不起,我問到鼠標點擊,而我實際上需要鼠標移動。點擊不會跟蹤鼠標移動。 – 2010-03-11 13:43:48

0

好吧,拖動是更復雜一點。您需要爲拖動的邊界定義一個矩形。如果你只想沿一個軸拖動,那麼你可以使矩形的寬度爲0.在這個例子中,我已經將滾動的數量限制在不同的數字上,並且可以在下面進行修改。

import flash.events.MouseEvent; 
import flash.geom.Rectangle; 

mySprite.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 

function mouseDownHandler(event:MouseEvent):void{ 
    stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); 
    var scrollUpAmount:int = 10; 
    var scrollDownAmount:int = 200; 
    var boundsRect:Rectangle = new Rectangle(mySprite.x,mySprite.y-scrollUpAmount,0,mySprite.y+scrollDownAmount); 
    mySprite.startDrag(false, boundsRect); 
} 

function mouseUpHandler(event:MouseEvent):void{ 
    stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); 
    mySprite.stopDrag(); 
} 
+0

我如何限制只有垂直的運動?謝謝 – 2010-03-11 14:21:08

+0

這個例子僅限於垂直拖動,正如我上面所解釋的。 如果你只想沿一個軸拖動(例如垂直),那麼你可以使邊界矩形的寬度爲0. – danjp 2010-03-12 09:39:03

相關問題