我在其他帖子中尝试过很多建议,但无法完全解决这个问题。
我想在舞台上拖动一个物体,但我不想让那个物体真正离开舞台。
当使用下面的示例时,MC被舞台的顶部和底部绑定,但是左侧仍然吞下拖动的MC的一半,而右侧不允许MC靠近边缘 - 它只是有空白区域(通过看起来与MC在左侧外侧拖动的宽度相同)
var my_x:int=stage.stageWidth-box_mc.width;
var my_y:int=stage.stageHeight-box_mc.height;
var myWidth:int=0-my_x;
var myHeight:int=0-my_y;
var boundArea:Rectangle=new Rectangle(my_x, my_y, myWidth, myHeight);
box_mc.addEventListener(MouseEvent.MOUSE_DOWN, drag);
box_mc.addEventListener(MouseEvent.MOUSE_UP, drop);
function drag(event:MouseEvent):void {
box_mc.startDrag(false,boundArea);
}
function drop(event:MouseEvent):void {
box_mc.stopDrag();
}
我相信代码是正确的,并且必须有一些我遗漏的东西 - 有人可以为我试试这个并指出我正确的方向吗?
非常感谢,
克里斯。
答案 0 :(得分:0)
您的注册点似乎应该归咎于您遇到的行为。
你应该使用类似的东西:
var boxArea:Rectangle = box_mc.getBounds(box_mc);
var boundArea:Rectangle = new Rectangle(-boxArea.x, -boxArea.y, stage.stageWidth-boxArea.width, stage.stageHeight-boxArea.height);
box_mc.addEventListener(MouseEvent.MOUSE_DOWN, drag);
box_mc.addEventListener(MouseEvent.MOUSE_UP, drop);
function drag(event:MouseEvent):void {
box_mc.startDrag(false,boundArea);
}
function drop(event:MouseEvent):void {
box_mc.stopDrag();
}
基本上,在上面的代码中,您获得了 box_mc 对象的矩形大小,并将其存放在 boxArea 变量中,并确保包含其大小和注册将效果指向 boundArea 计算。