如何设置拖拽X限制
问题描述:
我正在处理一些可拖拽/拖拽的酒吧。因此它只能拖拽x因为这是选择栏。问题是选择按钮可拖拽出舞台限制。我想只能在阶段limit.I尝试一些方法hitTestPoint和newshape,但它没有工作。如何设置拖拽X限制
// 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
}
}
UPDATE
通常酒吧的工作是这样的。
[![在这里输入的形象描述] [1] [1]
但问题是有打击的边界时或当尝试拖动到Y轴。
[![在这里输入的形象描述] [2] [2]
答
不要使用MOUSE_LEAVE
。使用MOUSE_UP
但stage
对象 - MOUSE_UP
由stage
对象调度即使它在Flash Player窗口外面你释放按钮(基本上任何地方)
所以,简单地改变这些线
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));
如果设置矩形HEIGH到0
,你的对象将在y轴(345你的情况)锁定,这样你不不需要使用LOCKY
变量并移动侦听器。
+0
谢谢,它确实有效。 – KucuKeko
第二个参数:** public function startDrag(lockCenter:Boolean = false,bounds:Rectangle = null):void ** http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/flash/显示/ Sprite.html#startDrag() – Organis
我是新的class.Im使用帧代码。我可以在帧代码中做到这一点? – KucuKeko
** secbuton.startDrag(false,new Rectangle(...)); **并在您传递的Rectangle构造函数中**矩形区域的左侧,顶部,宽度,高度**,该矩形区域应该是用于拖动的边界框你的secbutton对象。 – Organis