Приветствую.
Я создаю кастомный чекбокс, но при нажатии на него отображается "крестик" (true) на 1 кадр, затем снова "крестик" убирается (false).
Не пойму, что я не так делаю. Напишу сразу, чтобы отбросить некоторые вопросы - спрайты использовать не хочу для таких действий.
function drawCheckbox(valueBool, text, x, y, font = MainFont, colorCheckbox = c_gray, colorText = c_white) {
var x2 = x + 50;
var y2 = y + 50;
drawRectColor(x, y, x2, y2, colorCheckbox, false)
drawTextColorFont(x2 + 10, sizeLineWithTextY(y, y2, text), text, colorText, font)
if navOfXY(x, y, x2, y2) {
draw_roundrect(x, y, x2, y2, true)
if mouse_check_button_released(1)
valueBool = !valueBool // пробовал и xor и обычную лесенку if else... не получалось, думаю проблема в возвращающем значении
}
if valueBool
drawX(x + 5, y + 5, x + 45, y + 45, 3)
return valueBool
}
// функции которые использую:
function drawRectColor(x, y, x2, y2, color, outline) {
draw_set_color(color)
draw_roundrect(x, y, x2, y2, outline)
}
function drawTextColorFont(x, y, text, color, font) {
draw_set_color(color)
draw_set_font(font)
draw_text(x, y, text)
}
function drawX(x, y, x2, y2, w) {
draw_line_width(x, y, x2, y2, w)
draw_line_width(x2, y, x, y2, w)
}
function navOfXY(x, y, x2, y2) {
var nav = false
if mouse_x >= x and mouse_x <= x2 and mouse_y >= y and mouse_y <= y2
nav = true
return nav
}
function sizeLine(l1, l2) {
return (l1 + l2) * 0.5
}
function sizeLineWithTextY(l1, l2, text) {
return sizeLine(l1, l2) - (string_height(text) * 0.5)
}
// Event: Create
global.foo = false
// Event: Draw
drawCheckbox(global.foo, "Test", x, y)
Добавлено: Февраль 20, 2022, 02:54:18 В общем и целом получилось, но колхозно...
function drawCheckbox(valueBool, text, x, y, font = MainFont, colorCheckbox = c_gray, colorText = c_white) {
var x2 = x + 50, y2 = y + 50;
var click = false
drawRectColor(x, y, x2, y2, colorCheckbox, false)
drawTextColorFont(x2 + 10, sizeLineWithTextY(y, y2, text), text, colorText, font)
if navOfXY(x, y, x2, y2) {
draw_roundrect(x, y, x2, y2, true)
if mouse_check_button_released(1) {
click = true
}
}
if valueBool
drawX(x + 5, y + 5, x + 45, y + 45, 3)
return click
}
//при создании объекта в draw gui (в event - create: foo = false)
if drawCheckbox(foo, "Test", x, y) foo = !foo
Буду рад на дальнейшую помощь - если кто знает, как можно сделать нормально.