#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