Game Maker - создание игр | HellRoom Games
Январь 18, 2025, 15:42:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: При создании кастомного чекбокса значение возвращается на изначальное  (Прочитано 1253 раз)
0 Пользователей и 1 Гость смотрят эту тему.
PanSeek
Новичок
*

Репутация: 0
Offline Offline

Пол: Мужской
API: GameMaker Studio 2
Сообщений: 1



WWW
« : Февраль 19, 2022, 03:15:04 »

Приветствую.
Я создаю кастомный чекбокс, но при нажатии на него отображается "крестик" (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
Буду рад на дальнейшую помощь - если кто знает, как можно сделать нормально.
« Последнее редактирование: Февраль 20, 2022, 02:54:18 от PanSeek » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.145 секунд. Запросов: 27.