PDA

Просмотр полной версии : перемещение карты внутри поля


8exe8
05.01.2011, 02:40
Нужно сделать такой сплит во флеш ролике, внутри которого можно было бы картинку перетаскивать мышкой.
Наподобие карты в играх, когда её для обзора таскаешь мышью, увеличиваешь, уменьшаешь.
Сейчас пока обхожусь тем, что создаю ролик с рамкой и мувиком внутри. Внешний ролик помещаю в кадр, и к мувику написал обработчик перемещения мышью.

Пожалуйста подскажите кто знает:
Как сделать чтобы внутрений обрезался, а не вылазил за границы внешнего?:)

Adobe Flash CS5

TanaTiX
05.01.2011, 03:05
маска?
проверка координат?

nOobCrafter
05.01.2011, 03:22
Sprite.startDrag() \ Sprite.stopDrag(); почитайте.

alatar
05.01.2011, 08:21
DisplayObject#scrollRect (http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/display/DisplayObject.html#scrollRect)

8exe8
05.01.2011, 12:01
Спасибо alatar. Это то что нужно.
Вот такой код получился, если кому надо будет.
Тока обработчкики MOUSE_DOWN и MOUSE_UP прописать и все.


var circle:Sprite = new Sprite();
circle.graphics.beginFill(0xFFCC00);
circle.graphics.drawCircle(50, 50, 50);
circle.graphics.moveTo(70,70);
circle.graphics.drawCircle(20, 20, 20);
circle.scrollRect = new Rectangle(0, 0, 200, 200);
addChild(circle);

stage.addEventListener(MouseEvent.MOUSE_MOVE, fl_MouseOverHandler);
function fl_MouseOverHandler(event:MouseEvent):void
{
var rect:Rectangle = circle.scrollRect;
rect.x = -stage.mouseX + 25;
rect.y = -stage.mouseY + 25;
circle.scrollRect = rect;
}


Единственно хотелось бы добиться более плавного перемещения, встроенный объект несколько дерганно перемещается.

alatar
05.01.2011, 12:08
Единственно хотелось бы добиться более плавного перемещения
По mouseMove запоминайте координаты. По enterFrame перемещайте до достижения координат. Или используйте какой-нибудь твинер.

8exe8
05.01.2011, 13:44
Спасибо. Это тоже пригодилось.