23.07.2024 / 08:15 | |
Slendermanx Пользователь Сейчас: Offline
Имя: Awower Регистрация: 04.04.2017
| Basic сила, то что в нем нету тебе и не надо и он сам знает, что тебе надо __________________
Basic - это сила, а я Авовер Изменено Slendermanx (23.07 / 08:15) (всего 1 раз) |
23.07.2024 / 08:16 | |
Tygrain Пользователь Сейчас: Offline
Имя: Александр Откуда: Днепр Регистрация: 01.07.2012
| Slendermanx, значит в консоль никак нельзя печатать?
|
23.07.2024 / 08:17 | |
Slendermanx Пользователь Сейчас: Offline
Имя: Awower Регистрация: 04.04.2017
| Tygrain, в консоли только ошибки, для всего остального есть дебагер __________________
Basic - это сила, а я Авовер |
23.07.2024 / 10:59 | |
ЕжоргийЧерчилич Пользователь Сейчас: Offline
Имя: Ежоргий Откуда: ПТЗ Регистрация: 19.05.2024
| Slendermanx, бред, в консоль можно хоть картинки выводить
|
23.07.2024 / 11:02 | |
Slendermanx Пользователь Сейчас: Offline
Имя: Awower Регистрация: 04.04.2017
| ЕжоргийЧерчилич, ты не уловил нити разговора. Речь о Basic, в частности Dark
__________________
Basic - это сила, а я Авовер |
1.08.2024 / 15:10 | |
Кальцид Пользователь Сейчас: Offline
Имя: Влад Откуда: Карадарас Регистрация: 05.12.2011
| Почему через определённое время код начинает тормозить? Особенно когда начинаю двигать мышкой? Открыть спойлер Закрыть спойлер const canvas = document.getElementById("cnv");
const ctx = canvas.getContext("2d");
const SWidth = window.screen.width;
const SHeight = window.screen.height;
const updateFPS = createFPSCounter();
document.getElementById("cnv").width = SWidth-15;
document.getElementById("cnv").height = SHeight-15;
let mouse = {x:0,y:0};
ctx.translate(0.5, 0.5);
function createFPSCounter() {
let lastFrameTime = performance.now();
let frameCount = 0;
let fps = 0;
return function updateFPS() {
const currentTime = performance.now();
frameCount++;
if (currentTime - lastFrameTime >= 1000) {
fps = frameCount;
frameCount = 0;
lastFrameTime = currentTime;
}
return fps;
};
};
function adm() {
canvas.addEventListener('mousemove', function(event) {
mouse.x = event.clientX;
mouse.y = event.clientY;
});
ctx.font = "15px Comic Sans MS";
ctx.fillStyle = "white";
ctx.fillText("mouseX - "+mouse.x, 10, 150);
ctx.fillText("mouseY - "+mouse.y, 10, 170);
ctx.fillText("mouseX+- - "+(((SWidth/2) - mouse.x)+0), 10, 190);
};
function game() {
ctx.clearRect(0, 0, SWidth, SHeight);
ctx.fillStyle = "black";
ctx.fillRect(0,0,SWidth,SHeight);
adm();
requestAnimationFrame(game);
};
game();
|
1.08.2024 / 16:45 | |
RblSb Пользователь Сейчас: Offline
Регистрация: 25.07.2011
| У тебя в game каждый кадр вызывается adm, где постоянно добавляется addEventListener на каждое движение мышки. Тебе надо эту функцию вызывать вне requestAnimationFrame цикла, ну и можно назвать init например.
Изменено RblSb (1.08 / 16:45) (всего 1 раз) |
1.08.2024 / 20:03 | |
Кальцид Пользователь Сейчас: Offline
Имя: Влад Откуда: Карадарас Регистрация: 05.12.2011
| RblSb, как это в не requestAnimationFrame? Ведь это основной цикл игры, где всё происходит, каждый кадр нужно отслеживать положение мыши и записывать эти данные в переменные, для дальнейшей работы. Или я, что то не понимаю..
|
1.08.2024 / 21:01 | |
ЕжоргийЧерчилич Пользователь Сейчас: Offline
Имя: Ежоргий Откуда: ПТЗ Регистрация: 19.05.2024
| Цитата Кальцид: RblSb, как это в не requestAnimationFrame? Ведь это основной цикл игры, где всё происходит, каждый кадр нужно отслеживать положение мыши и записывать эти данные в переменные, для дальнейшей работы. Илиdocument.addEventListener("mousemove",(event)=>{
window.mouseX=event.x;
window.mouseY=event.y;
});
И просто значение переменной смотришь (ДОБ.: да, это у тебя правильно сделано) Евент листенер достаточно один раз создать и оставить, иначе ты их на каждом кадре плодишь, это плохо -- оно один раз ставится и реагирует. Ставится оно глобально, а не в контексте -- как глобальные переменные. Добавлено: ть эти данные в переменные, для дальнейшей работы.Запятая лишняя Или я, что то не понимаю..Запятая лишняя, "что-то" через дефис Изменено ЕжоргийЧерчилич (1.08 / 21:06) (всего 4 раза) |
1.08.2024 / 23:38 | |
RblSb Пользователь Сейчас: Offline
Регистрация: 25.07.2011
| Кальцид, ты не получаешь каждый кадр в своем цикле координаты мыши, а создаешь обработчик ее события. Как только мышь сдвинется, функция твоего обработчика будет вызвана, независимо от твоего игрового цикла.
А сейчас ты каждый кадр создаешь все больше обработчиков и после каждого движения мыши у тебя браузер тысячи раз тебе отправляет координаты в тысячи твоих каллбеков, созданных через addEventListener каждый кадр.
Это как каждую секунду на тебя датчик сердцебиения прилеплять очередной и потом они все начинают пищать когда слышат стук.
Изменено RblSb (1.08 / 23:40) (всего 1 раз) |