2010-03-11 4 views

Répondre

1

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

version Flex

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

Chacun de ceux-ci vous pouvez coller et vous faire ce que vous avez dit. il créera une boîte rouge 20x20 verticalement identique à la souris mais fixée horizontalement. La version flexible de votre souris doit être dans le canevas contenant.

+0

Super, merci! –

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

désolé, j'ai demandé à propos du clic de souris, alors que j'ai besoin d'un mouvement de la souris en fait. Le clic ne suit pas le mouvement de la souris. –

0

Ok, est un traînage peu plus compliqué. Vous devez définir un rectangle pour les limites du glissement. Si vous voulez simplement faire glisser le long d'un axe, vous faites en sorte que le rectangle ait une largeur de 0. Dans cet exemple, j'ai limité la quantité de défilement et de descente à différents nombres que vous pouvez modifier ci-dessous.

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

Comment limiter le mouvement à la verticale uniquement? merci –

+0

Cet exemple est limité au glissement vertical seulement comme je l'ai expliqué ci-dessus. Si vous voulez simplement faire glisser le long d'un axe (par exemple vertical), alors vous faites le rectangle des limites ont une largeur de 0. – danjp

Questions connexes