AS3 Как установить границы для перетаскивания мышью вниз? - PullRequest
0 голосов
/ 27 июня 2011

Я новичок в AS3, и у меня есть квадрат (1200 Вт), который больше, чем сцена (200 Вт).Прямо сейчас вы можете продолжать перетаскивать его влево и вправо настолько, насколько это возможно.Как я могу установить лимит / границу того, сколько квадрата вы можете перетащить?Чтобы его нельзя было перетащить за пределы максимальной ширины?

Вот изображение

this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
this.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);

function mouseDownHandler(e:MouseEvent) {
    this.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
}

function mouseMoveHandler(e:MouseEvent) {
    square_mc.x = mouseX;
}

function mouseUpHandler(e:MouseEvent) {
    removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
}

Обратите внимание, что я не хочу использовать startdrag() метод.

1 Ответ

0 голосов
/ 27 июня 2011

Исходя из вашего изображения, предположим, что mc относится к синей рамке.

var ox:Number = 0;

mc.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);

function mouseDownHandler(e:MouseEvent):void
{
    ox = mc.mouseX;

    stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
    stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
}

function mouseUpHandler(e:MouseEvent):void
{
    stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
}

function mouseMoveHandler(e:MouseEvent):void
{
    mc.x = mc.parent.mouseX - ox;

    if(mc.x > 0) mc.x = 0;
    if(mc.x + mc.width < stage.stageWidth) mc.x = stage.stageWidth - mc.width;
}

Надеюсь, это то, что вы хотели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...