#javascript #canvas #discord #discord.js
Вопрос:
Я создаю таблицу лидеров пользователей с помощью Canvas, и вся статистика работает нормально. Одна вещь, с которой у меня возникают проблемы, — это отображение изображения профиля для каждого пользователя в таблице лидеров. В последнем месте отображается пфу пользователя, и я предполагаю, что остальные находятся под ним, но у меня возникают проблемы с подключением каждого пфу к новой строке. Любая помощь будет признательна. Спасибо!
Код:
for (var i in level) {
let user = await client.users.fetch(`${level[i].ID.replace('guild_646074330249429012_level_', '')}`).catch(console.error);
numList = `${level.indexOf(level[i]) 1}.nn`
usernames = `${user.username}- Level ${level[i].data}nn`
ctx.font = "15px coolvetica_rg";
ctx.textAlign - "center";
ctx.fillStyle = "#FFFFFF";
ctx.fillText(numList, 22, 80);
ctx.font = "24px coolvetica_rg";
ctx.textAlign - "center";
ctx.fillStyle = "#FFFFFF";
ctx.fillText(usernames, 50, 80);
ctx.width = "30px";
ctx.length = "200px";
ctx.margin = "30px";
const avatar = await Canvas.loadImage(user.displayAvatarURL({ format: 'jpg' }));
ctx.drawImage(avatar, 10, 10, 50, 50);
}
Результат: Отображается только одна фотография профиля пользователя (Пользователь на последнем месте в таблице лидеров)
Комментарии:
1. Похоже, что вы каждый раз рисуете изображение в одном и том же месте. Вам нужно будет нарисовать его в размерах, которые меняются в зависимости от количества пользователей на фоне, соответствующем этому количеству.
Ответ №1:
Все аватары нарисованы на холсте, единственная причина, по которой вы можете видеть только последний, заключается в том, что вы нарисовали их в одном и том же положении друг над другом.
У вас уже есть переменная ( i
), которая увеличивается после каждой итерации. Вы должны использовать это для увеличения координаты Y изображений, что-то вроде этого:
let size = 50
let padding = 10
ctx.drawImage(avatar, padding, padding i * (size padding), size, size);
Вторым drawImage
и третьим параметрами метода являются координаты X и Y изображения.
Комментарии:
1. О, чувак, мне почему-то не пришло в голову, что я мог бы использовать i var, твое решение сделало свое дело, большое тебе спасибо!!