У меня есть некоторые враги в массиве, они движутся влево и вправо. Простой код, который обновляет врагов позиции:Пространство между движущимися объектами
// when the game starts, moveRight is true
var moveRight:Boolean = true;
for (var i:int = 0; i < enemies.length; i++)
{
if(moveRight)
{
// they are moving right
enemies[i].vx = 2;
}
else
{
// they are moving left
enemies[i].vx = -2;
}
// limit movement
if (enemies[i].x >= 550)
{
moveRight = false;
}
else if (enemies[i].x <= 50)
{
moveRight = true;
}
// move enemies
enemies[i].x += enemies[i].vx;
}
Проблема: Каждый раз, когда враги ударил левой boudary (х < = 50), пространство между 1 и 2 враг становится все больше. Im не хорошо объяснить вещи на английском, так что я загрузил довольно основной .swf пример здесь:
http://www.fastswf.com/GXKix5s
Просто посмотреть, что происходит с противником на левой стороне.
я могу решить эту проблему, добавив одну строку кода (новый код ниже) внутри если-другое заявление:
if (enemies[i].x >= 550)
{
moveRight = false;
}
else if (enemies[i].x <= 50)
{
moveRight = true;
// NEW CODE
enemies[i].x += 2;
}
Он работает даже с несколькими строками, вы можете увидеть здесь
http://www.fastswf.com/icsom6A
Итак, вопрос в чем проблема? Почему пространство между врагами становится все больше, когда они меняют свое направление слева направо? Если я петлю troguh массив назад, у меня проблема с правой стороны, а не слева.
Я добавил пример ответа – imcg
Да, мне нужно 2 цикла, и теперь он отлично работает, отличный ответ, спасибо. –