#ruby #button #fxruby
#ruby #кнопка #fxruby
Вопрос:
У меня есть опыт программирования старой школы, но я новичок в Ruby: для игры Hangman у меня есть кнопки A .. Z, подключенные через FXDataTarget (установлено значение -1, чтобы первая кнопка не выбиралась автоматически). Во время воспроизведения при нажатии каждой кнопки она отключается. Чтобы инициализировать новую игру, я повторно включаю каждую кнопку. Все хорошо, за исключением того, что последняя кнопка из предыдущей игры выделена и, следовательно, недоступна (пока не будет нажата другая кнопка). Я, очевидно, хотел бы, чтобы ВСЕ кнопки были установлены во время загрузки.
Я пробовал изменять атрибуты (ButtonStyle и State); Я пробовал killFocus; Я даже пытался воссоздать FXDataTarget. Ни один из них не имеет никакого эффекта.
@letterSel =FXDataTarget.new(-1)
letterBtns = {}
("A".."Z").each_with_index do |ltr, x|
letterBtns[x] = FXButton.new(matrix, ltr, opts:FRAME_RAISED, target:@letterSel, selector:FXDataTarget::ID_OPTION (x))
end
@letterSel.connect(SEL_COMMAND) do |sender, sel, data|
ltr = letterBtns[data].text
letterBtns[data].disable
end
newGameBtn.connect(SEL_COMMAND) do |sender, sel, data|
matrix.each_child do |btn|
btn.enable
# And here is where I try manipulating the button's appearance/functionality
end
end
Ответ №1:
Хорошо, я немного глуп — ответ был очевиден! Все, что мне нужно было сделать, это вернуть значение FXDataTarget обратно в -1: @letterSel.value = -1
(Я не знаю, как пометить это как разрешенное)