我正在as3 / flash cs6中创建一个交互式地图。 目前,我已经让它放大和缩小,并被拖走。
但我的问题是,如何限制地图可以拖动的区域,所以你不能看到它外面的空白区域?
这是我的代码:
import flash.events.MouseEvent;
function initDragger(mc:MovieClip):void
{
mc.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
mc.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
}
function mouseDownHandler(e:MouseEvent):void
{
e.currentTarget.startDrag();
}
function mouseUpHandler(e:MouseEvent):void
{
e.currentTarget.stopDrag();
}
// Set up drag
initDragger(map);
zoomIn.addEventListener(MouseEvent.CLICK, mapzoomin);
function mapzoomin(event:MouseEvent):void
{
if (map.scaleX < 10)
{
map.scaleX += 1;
map.scaleY += 1;
}
}
zoomOut.addEventListener(MouseEvent.CLICK, mapzoomout);
function mapzoomout(event:MouseEvent):void
{
if (map.scaleX > 1)
{
map.scaleX -= 1;
map.scaleY -= 1;
}
}
答案 0 :(得分:0)
矩形尺寸应与可拖动项目的左上角相关。因此,如果你有一个100x100的地图和一个50x50的可视区域,那么矩形就是{x:-50,y:-50,宽度:50,高度:50}
答案 1 :(得分:0)
这样做的一个非常简单的方法是检查地图的x和y坐标是什么,并确保它们不会超出你想要的范围。
例如。
(假装你的舞台是200px宽和高)
stage.addEventListener(Event.ENTER_FRAME, update);
function update(e:Event)
{
if(map.x > 0) map.x = 0;
if(map.x < map.width - 200) map.x = map.width - 200;
if(map.y > 0) map.y = 0;
if(map.y < 0 - (map.height - 200)) map.y = 0 - (map.height - 200);
}
我没有测试过,但它应该是正确的。