Акселерометр — шарик сходит со сцены. Flash AS3

#flash #actionscript-3 #actionscript #accelerometer

#вспышка #actionscript-3 #actionscript #акселерометр

Вопрос:

У меня проблема с использованием акселерометра во Flash AS3. Скрипт работает нормально, однако шарик исчезает с экрана только слева и снизу, и я бы хотел, чтобы он содержался в пределах сцены.

что я делаю не так?

Вот мой сценарий:

 import flash.sensors.Accelerometer; 
import flash.events.AccelerometerEvent;

var my_acc:Accelerometer = new Accelerometer();
my_acc.setRequestedUpdateInterval(50);

my_acc.addEventListener(AccelerometerEvent.UPDATE, onAccUpdate);
function onAccUpdate(e:AccelerometerEvent):void{
    ball.x -= (e.accelerationX*30);
    ball.y  = (e.accelerationY*30); 

    if (ball.x < 0) { 
        ball.x = 0; 
    } else if (ball.x > stage.stageWidth) { 
        ball.x = stage.stageWidth; 
    } 

    if (ball.y < 0) { 
        ball.y = 0; 
    } else if (ball.y > stage.stageHeight) { 
        ball.y = stage.stageHeight; 
    }
}
  

Комментарии:

1. Попробуйте выполнить свои проверки >= . if(ball.x <= 0) и т.д..

2. Если мяч уходит с экрана только влево и вниз, проверьте, установлена ли центральная точка мяча вправо-вверх.

Ответ №1:

Проблема в том, что вы уменьшаете значение x на accX * 30,
что означает, что если вы получите значение шарика x равным нулю, т. е. если выполняется условие <0 ,
тогда оно снова станет меньше нуля за пределами сцены.
В то время как в условии >stagewidth значение, на которое мяч удаляется от границы сцены, уменьшается.

* То же самое происходит со значением y.

Установите значение условия .x<0 равным 30 или ball.width вместо 0 и .y> значение stagewidth равным stagewidth-30 или stagewidth-ball.width