Имеется вот такой код
var cvs = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var block = new Image();
var bg = new Image();
block.src = 'block.png';
bg.src = 'bg.png';
var x = 240;
var lessX = -2;
var addX = 2;
var y = 10;
var addY = -2;
var lessY = 2;
function usl(){
if(x > 10){
x += lessX;
}
if(x <= 10){
x = 10;
addX = 0;
y += lessY;
}
if(y >= 340){
y = 340;
lessY = 0;
lessX = 0
addX = 2;
x += addX;
}
if(x >= 240){
x = 240;
addX = 0;
y += addY;
}
}
function draw(){
ctx.drawImage(bg, 0, 0);
ctx.drawImage(block, x, y);
usl();
if(x == 240 && y == 10){
usl();
}
requestAnimationFrame(draw);
}
bg.onload = draw;
В функции draw() стоит условие, которое, по идее, должно запускать алгоритм заново ( квадратик встает в ту же самую точку, откуда и начинал, и предыдущие условия должны на нем работать ( то есть он снова должен пойти влево ) ).
if(x == 240 && y == 10){
usl();
}
Но он не идет. В чем может быть проблема ?
Вам нужно вернуть начальные значения для переменных lessX, addX, lessY и addY, чтобы ваш квадратик принял исходное направление
if (x == 240 && y == 10) {
lessX = -2;
addX = 2;
lessY = 2;
addY = -2;
}
Это условие лучше из draw
перенести в конец функции usl
, поскольку она у вас вычисляет позицию квадратика, а в draw
оставить только рисование и вызов usl
:
function draw(){
ctx.drawImage(bg, 0, 0);
ctx.drawImage(block, x, y);
usl();
requestAnimationFrame(draw);
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите пожалуйста, как сделать так, чтоб в ST3 на одном экране отображались сразу 2 окна, чтоб не постоянно не переключаться между ними
Нужно что бы спрайт плавное изменял свой цвет в красный оттенок ,а потом обратно в свой дефолтный (хочу сделать мигание)Возможно ли такое...
Всем привет! Сегодня решил попробовать написать бота для Telegram на c#Использовал dotnet