Actionscript 3 ActionScript-鼠标逻辑问题
愚蠢的问题。不好意思,我还没有找到解决办法。我累了 舞台上的红场。鼠标向下+鼠标向上拖动将向下移动红方块(+y),而鼠标向下+鼠标向下拖动将向上移动红方块(-y)。这种相反的运动是需要的 但是,在鼠标拖动过程中,正方形必须开始从其当前y位置移动,无论有多少鼠标拖动改变了其初始化位置。目前,红方块总是从阶段0开始,因为我的mouseDownOrigin变量不正确,因为我的大脑处于睡眠状态Actionscript 3 ActionScript-鼠标逻辑问题,actionscript-3,mouse,Actionscript 3,Mouse,愚蠢的问题。不好意思,我还没有找到解决办法。我累了 舞台上的红场。鼠标向下+鼠标向上拖动将向下移动红方块(+y),而鼠标向下+鼠标向下拖动将向上移动红方块(-y)。这种相反的运动是需要的 但是,在鼠标拖动过程中,正方形必须开始从其当前y位置移动,无论有多少鼠标拖动改变了其初始化位置。目前,红方块总是从阶段0开始,因为我的mouseDownOrigin变量不正确,因为我的大脑处于睡眠状态 package { import flash.display.Sprite; import flash.eve
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
public class Test extends Sprite
{
private var sp:Sprite = new Sprite();
private var mouseDownOrigin:int;
public function Test()
{
sp.graphics.beginFill(0xFF0000);
sp.graphics.drawRect(0, 0, 100, 100);
sp.x = sp.y = 200;
addChild(sp);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownEventHandler);
}
private function mouseDownEventHandler(evt:MouseEvent):void
{
mouseDownOrigin = evt.stageY;
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveEventHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpEventHandler);
}
private function mouseMoveEventHandler(evt:MouseEvent):void
{
sp.y = mouseDownOrigin - evt.stageY;
}
private function mouseUpEventHandler(evt:MouseEvent):void
{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveEventHandler);
stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUpEventHandler);
}
}
}
您需要在MouseUp事件处理程序上记录红方块y的位置,实际上是记录您将方块留在其中的位置
private var currentPosition:int;
private function mouseUpEventHandler(evt:MouseEvent):void
{
currentPosition = sp.y;
stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveEventHandler);
stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUpEventHandler);
}
private function mouseMoveEventHandler(evt:MouseEvent):void
{
var n:int = event.stageY - mouseDownOrigin ;
sp.y = currentPosition - n;
}
啊,是的,这就是我大脑缺失的逻辑。哈哈,再次感谢帕特里克。