我正在研究一些可拖动/可放置的条。所以它只能拖动x,因为这是选择条。问题是选择按钮可拖出舞台限制。我想只在阶段限制中可拖动。我尝试了一些方法hitTestPoint和newshape但它没有用。
// define lock on y-axis
var LOCKY:Number = secbuton.y;
stage.addEventListener(MouseEvent.MOUSE_MOVE, _mouseMove);
function _mouseMove(e:MouseEvent):void
{
if(secbuton.y != LOCKY) secbuton.y = LOCKY;
}
// dragging
secbuton.addEventListener(MouseEvent.MOUSE_DOWN, _mouseDown);
function _mouseDown(e:MouseEvent):void
{
secbuton.startDrag(false, new Rectangle(35,345,420));
secbuton.addEventListener(MouseEvent.MOUSE_UP, _mouseUp);
}
// dropping
function _mouseUp(e:MouseEvent):void
{
secbuton.stopDrag();
secbuton.removeEventListener(MouseEvent.MOUSE_UP, _mouseUp);
if(secbuton.hitTestObject(kose1)){
secbuton.x = levcbk1.x +5
}
if(secbuton.hitTestObject(lev2)){
secbuton.x = levcbk2.x +5
}
if(secbuton.hitTestObject(lev3)){
secbuton.x = levcbk3.x +5
}
if(secbuton.hitTestObject(lev4)){
secbuton.x = levcbk4.x +5
}
if(secbuton.hitTestObject(lev5)){
secbuton.x = levcbk5.x +5
}
}
更新
通常情况下这样工作。
[![在此处输入图像说明] [1]] [1]
但是当碰到边框或尝试拖动到y轴时会出现问题。
[![在此处输入图像说明] [2]] [2]
答案 0 :(得分:2)
不要使用MOUSE_LEAVE
。使用MOUSE_UP
,但stage
对象 - MOUSE_UP
会被stage
对象调度,即使您在Flash播放器窗口外发布按钮(基本上在任何地方)
所以只需更改这些行
secbuton.addEventListener(MouseEvent.MOUSE_UP, _mouseUp);
secbuton.removeEventListener(MouseEvent.MOUSE_UP, _mouseUp);
到此:
stage.addEventListener(MouseEvent.MOUSE_UP, _mouseUp);
stage.removeEventListener(MouseEvent.MOUSE_UP, _mouseUp);
正如Organis所说。 Rectangle
参数为x , y , width and height
。
所以我从你想要的GIF上看到它设置为:
secbuton.startDrag(false, new Rectangle(35,345,420-35,0));
如果将矩形高度设置为0
,则您的对象将锁定在y轴上(在您的情况下为345),因此您不需要使用LOCKY
变量并移动侦听器