2

我只需要在鼠标移动时垂直移动精灵。如何用 as3 实现它?

谢谢

4

3 回答 3

1
addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(e:MouseEvent):void{
    mySprite.y += amount;
}
于 2010-03-11T13:25:29.140 回答
1

闪存版

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 红色框。您的鼠标必须在包含的 Canvas 中的 flex 版本。

于 2010-03-11T21:38:57.787 回答
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();
}
于 2010-03-11T14:08:21.580 回答