我正在创建一个基于Flash的应用程序,用户可以使用鼠标拖动更改矩形的形状,宽度和高度。这是一个快速的原型图像。
让我简单解释一下:在你可以看到的图像中,我有一个很小的红色矩形,现在坐的是一个起始位置,用户可以只将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);
}
答案 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);
}