У меня есть класс Elevator, который используется для объектов, и я помещаю их в массив. Однако моя функция Prepare, которая очищает холст, работает для всего остального на экране, за исключением этого объекта. Я попытался перемещаться по функциям перезаписи и где я их называю, но ничего не исправляет, и я не вижу, что другие затронуты, если этот объект не является?Canvas redraw not working
нажмите и посмотреть, что я имею в виду: http://www.taffatech.com/Platformer.html
function drawElevators()
{
for (var i=0;i<Elevators.length;i++)
{
Elevators[i].y--;
ctx.fillStyle = "grey";
ctx.fillRect(Elevators[i].x,Elevators[i].y,Elevators[i].width,Elevators[i].height);
}
}
Мой цикл:
function Loop(){
Prepare();
movePlayer();
if(level == 1)
{
Level1();
}
else if(level == 2)
{
Level2();
}
else if (Level ==3)
{
Level3();
}
else
{
Level4;
}
if(ElevatorOn == true)
{
drawElevators();
}
checkCol();
drawPlayer();
requestAnimFrame(Loop);
}
Но я только создал один объект лифта, так что, если я хотел более чем 1 лифт на уровень? Как я могу сделать так, чтобы объект просто повышался (y--), а затем перерисовывал объект? –
Вы уже перерисовываете объект. Но они двигаются слишком медленно, поэтому все они склеиваются. Попробуйте сделать их быстрее: 'y- = 50' или отделить их, например, различные начальные координаты x. – simonzack
Сделать увеличение больше не будет, проблема заключается в том, чтобы не очистить последний из себя. То что не так. Как игрок движется так, почему Wont The Elevator :) –