0

我正在创建一个基于 Flash 的应用程序,用户可以在其中使用鼠标拖动来更改矩形的形状、宽度和高度。这是一个快速的原型图像。 在此处输入图像描述

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

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

这是代码:

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

}
4

2 回答 2

2

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

您只需要起始位置和当前位置之间的差异:

function calculateHorizPixel(evt:MouseEvent):void {

      var dx = scrollHoriz.x - horizCount;

      trace(dx);
}

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

于 2013-01-23T10:30:42.060 回答
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);
}
于 2013-01-25T19:45:41.713 回答