Я хочу остановить движение мувиклипов, когда оно падает на стену (еще один мувиклип).
Пример ниже работает, но после столкновения мувиклип «блокирует» все движение влево ...
Мой вопрос к вам: это хороший способ и почему он не работает хорошо?
Там будет что-то не так в этом коде, но я учусь.
А пока пример с клавишей leftArrow;
переменные для проверки ключа, если он ударяет по стенам и движется или нет:
var leftArrow:Boolean;
var speed:int = 10;
var hitting:Boolean;
var ismoving:Boolean;
прослушиватели событий для клавиш / движения и обнаружения столкновения:
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased);
stage.addEventListener(Event.ENTER_FRAME, walking);
stage.addEventListener(Event.ENTER_FRAME, detectHit);
функция обнаружения столкновений:
function detectHit(e:Event) :void
{
if(char.hitTestObject(bounds))
{
hitting = true;
}
}
функция клавиши со стрелкой влево:
function keyPressed(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.LEFT)
{
leftArrow = true;
}
}
function keyReleased(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.LEFT)
{
leftArrow = false;
}
}
И причина, по которой это не работает, возможно, здесь, но я не понимаю, почему нет:
function walking(event:Event):void {
if (rightArrow) {
char.x += speed;
}
if (leftArrow && ! hitting) {
char.x -= speed;
}
else
{
ismoving = false
}