Как остановить мувиклип на оси Y с помощью кнопок?

У меня есть две кнопки, которые перемещают видеоклип вверх / вниз по оси Y. Как заставить видеоклип остановиться на определенной высоте и при этом иметь возможность перемещать его в противоположном направлении?

Мне нужно, чтобы это работало так:

Когда вы нажимаете кнопку "вниз", видеоклип идет вниз, но не дальше Y=500. Когда вы нажимаете кнопку "вверх", видеоклип перемещается вверх, но не дальше Y= 300.

Я заставляю мувиклип останавливаться в правильной точке (500), но когда он достигает этой точки, он застревает... поэтому он не поднимется снова, если я нажму кнопку вверх.

Может кто-то помочь мне, пожалуйста?:)

вот мой код до сих пор:

1) decrease = the down-button
2) increase = up-button
3) stempel = the movieclip I want to stop on the Y-axis



var moveStempel = 0;

decrease.addEventListener(MouseEvent.MOUSE_DOWN, decreasePressed);  
decrease.addEventListener(MouseEvent.MOUSE_UP, removeEnterFrame);

increase.addEventListener(MouseEvent.MOUSE_DOWN, increasePressed); 
increase.addEventListener(MouseEvent.MOUSE_UP, removeEnterFrame);

function decreasePressed(e:MouseEvent):void  
{   
    moveStempel = 2;
    addEnterFrame();
}


function increasePressed(e:MouseEvent):void  
{   
    moveStempel = -2;
    addEnterFrame();
}




// ADD ENTER FRAME 
function addEnterFrame():void 
{     
    this.addEventListener(Event.ENTER_FRAME, update); 
}  

function removeEnterFrame(e:MouseEvent):void 
{     
    this.removeEventListener(Event.ENTER_FRAME, update); 
}  

function update(e:Event):void 
{     
    if (stempel.y < 500)
    {
        stempel.y += moveStempel;
        trace("inside");
    }

    else if (stempel.y > 500)
    {
        stempel.stop();
        trace("outside");
    }

1 ответ

Решение

В вашем коде прямо сейчас, один раз stempel имеет y значение больше 500, он никогда не сможет двигаться снова.

Есть два условия, когда stempel может двигаться: если он движется вниз, он не может быть в нижней части разрешенной области, а если он движется вверх, он не может быть в верхней части разрешенной области.

if ((stempel.y < 500 && moveStempel == 2) || (stempel.y > 300 && moveStempel == -2))
{
    stempel.y += moveStempel;
    trace("inside");
}
else
{
    stempel.stop();
    trace("outside");
} 
Другие вопросы по тегам