Установить граничный предел для MovieClip (AS3) - PullRequest
1 голос
/ 22 сентября 2010

У меня есть мувиклип, который может двигаться вверх, вниз, влево и вправо.Если мувиклип попадает в стену, МС отскакивает и не должен проходить мимо стены - но если вы продолжаете нажимать клавишу со стрелкой вверх, вниз, влево или вправо и не отпускаете - мувиклип пройдетстена.Я пытаюсь найти способ остановить это. звено движения

    // function hitWall --------------------------------------------------------------
    function hitWall(event:Event):void {
        if (box.hitTestObject(wall)) {
                box.y+=6;
            } else if (box.hitTestObject(wall2)) {
                box.y-=6;

            } else if (box.hitTestObject(wall3)) { 
                box.x+=6;

            } else if (box.hitTestObject(wall4)) {
                box.x-=6;
            }

    }

    // function keyDownEvent ------------------------------------------------------------
     function keyDownEvent(event:KeyboardEvent):void {
         switch (event.keyCode) {
            case Keyboard.UP:
               keyUpward = true;
               keyDownward = false;
               break;

            case Keyboard.DOWN:
               keyDownward = true;
               keyUpward = false;
               break;

            case Keyboard.LEFT:
               keyLeft = true;
               keyRight = false;
               break;

            case Keyboard.RIGHT:
               keyRight = true;
               keyLeft = false;
               break;
         }
      }

    // function keyUpEvent ------------------------------------------------------------
     function keyUpEvent(event:KeyboardEvent):void {
         switch (event.keyCode) {

            case Keyboard.UP:
               keyUpward = false;
               break;

            case Keyboard.DOWN:
               keyDownward = false;
               break;

            case Keyboard.LEFT:
               keyLeft = false;
               break;

            case Keyboard.RIGHT:
               keyRight = false;
               break;
         }
      }

    // function frameloop ------------------------------------------------------------
     function frameloop(event:Event):void {

         if (keyUpward) {
            forwardMove -=2;
         }
         if (keyDownward) {
            forwardMove += 2;
         }
         if (keyLeft) {
            sideMove -= 2;
         }
         if (keyRight) {
            sideMove += 2;
         }

         forwardMove +=(0-forwardMove)/inertia;
         sideMove +=(0-sideMove)/inertia;

         box.y+=forwardMove;
         box.x+=sideMove;

      } 

Ответы [ 2 ]

2 голосов
/ 22 сентября 2010

Попробуйте прослушать положение вашего мувиклипа с помощью события enterframe. Когда мувиклип выходит за границы, вы можете удалить прослушиватель событий клавиатуры или вызвать противоположное событие клавиатуры и заставить MovieClip отскочить в противоположном направлении

Обратите внимание, что он может конфликтовать с вашим методом hitWall (), поэтому вам может понадобиться использовать одно решение поверх другого

0 голосов
/ 23 сентября 2010

По сути, каждый раз, когда вы перемещаете объект, вы должны проверить, сталкивается ли он со стеной. Если это так, вы должны установить его положение как раз в «безопасной» области. Вы должны выполнить этот тест в нижней части кадра.

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