如何检查用户是否在动作脚本3中拖动对象的右侧或左侧

时间:2013-01-23 10:13:58

标签: actionscript-3 flash user-input

我正在创建一个基于Flash的应用程序,用户可以使用鼠标拖动更改矩形的形状,宽度和高度。这是一个快速的原型图像。 enter image description here

让我简单解释一下:在你可以看到的图像中,我有一个很小的红色矩形,现在坐的是一个起始位置,用户可以只将100px拖到右侧。这个想法是,当用户将其拖动到右边时,我想要将矩形也扩展到右侧,就像一个灵活的盒子。如果他拖回来那么它会随之回来。

所以,疑问是:如何检查,用户是拖动右侧还是左侧。所以基于此我们可以更新矩形宽度。

以下是代码:

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

var horizRect:Rectangle = new Rectangle(scrollPathHoriz.x, scrollPathHoriz.y, 100, 0);
var horizCount:Number;

//event listener for the anchor point.
scrollHoriz.addEventListener(MouseEvent.MOUSE_DOWN, dragScroller);
stage.addEventListener(MouseEvent.MOUSE_UP, dropScroller);

//mouse down and mouse up event handler.
function dragScroller(evt:MouseEvent):void {

    horizCount= scrollHoriz.x;

    scrollHoriz.startDrag(false, horizRect);
    scrollHoriz.addEventListener(MouseEvent.MOUSE_MOVE, calculateHorizPixel);
}

function dropScroller(evt:MouseEvent):void {
    scrollHoriz.stopDrag();
    scrollHoriz.removeEventListener(MouseEvent.MOUSE_MOVE, calculateHorizPixel);
}


function calculateHorizPixel(evt:MouseEvent):void {

    horizCount ++;
    trace(horizCount);

}

2 个答案:

答案 0 :(得分:2)

由于您已经保存了起始位置,

你只需要起始位置和放大器之间的区别。当前位置:

function calculateHorizPixel(evt:MouseEvent):void {

      var dx = scrollHoriz.x - horizCount;

      trace(dx);
}

负值 dx 表示 scrollHoriz 向左移动,否则向右移动。

答案 1 :(得分:0)

或试试这个:

import flash.events.MouseEvent;

stage.addEventListener(MouseEvent.MOUSE_MOVE, moveMouse);

function moveMouse(event:MouseEvent):void
{
    var dx:Number = mouseX - stage.stageWidth/2;
    trace(dx);
}