Перейти к содержанию

Дайджесты за январь-февраль

Обновления гайдов и аддонов

Январь Февраль

Мониторинг серверов и редактор аддонов

Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.

Мониторинг серверов Редактор аддонов

Подсказки из игры на вашем сайте

Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.

Подробнее

Апдейтер аддонов

Представляем вам программу для автообновления аддонов и делимся подробностями.

Подробнее Скачать

WidgetButton назначить Reaction


jedbez

Рекомендуемые сообщения

Есть

Global( "wtB1",wtMainPanel:GetChildChecked( "b", false ))

Global( "wtB2",mainForm:CreateWidgetByDesc(wtB1:GetWidgetDesc()))

подскажите как каждому назначить свою Reaction, чтобы каждой кнопке соответствовала своя функция.

Ссылка на комментарий
Поделиться на другие сайты

Реакция будет одна и та же, различия будут в виджет кнопки, которые различаются по имени. Если надо пример вечером скину.

Ссылка на комментарий
Поделиться на другие сайты

Пример допустим ловится реакция mouse_click

common.RegisterReactionHandler(f_mouse_click, "mouse_click")

Отправляем на функцию f_mouse_click

function f_mouse_click(params)
local widgetName = params.widget:GetName()
if widgetName == "wtB1" then
 тут действия при нажатии на кнопку с именем wtB1
elseif    widgetName == "wtB2" then
 тут действия при нажатии на кнопку с именем wtB2
end
end

есть еще вариант с params.widget:IsEqual если wtB массив ссылающийся на виджеты

и глобальные переменные лучше не использовать, используй в данном случае локальные.

ах да назначение имени виджету через Widget:SetName( name )

Ссылка на комментарий
Поделиться на другие сайты

О, спс как раз то что нужно.

Глобальными переменные сделаны для динамического обновления надписи кнопки.

Хотя..., постараюсь убрать в локальные.

Изменено пользователем jedbez
Ссылка на комментарий
Поделиться на другие сайты

объявив локальную переменную например в первой строчке кода, можно получить к ней доступ из любой функции в этом коде.

объявив глобальную переменную можно перезаписать её с другого скрипта lua подключенному к твоему аддону.

Разница в том, что переменные, которые объявлены глобально занимают больше памяти.

Глобальные переменные нужны например, когда есть файл config.txt и нужно взять данные с него и записать в переменные в коде.

local wtB1=wtMainPanel:GetChildChecked( "b", false )
local wtB2=mainForm:CreateWidgetByDesc(wtB1:GetWidgetDesc())

Ссылка на комментарий
Поделиться на другие сайты

Ага понял, переделал. Всё получилось.

Изменено пользователем jedbez
Ссылка на комментарий
Поделиться на другие сайты

function f_mouse_click(params)

local widgetName = params.widget:GetName()

if widgetName == "wtB1" then

тут действия при нажатии на кнопку с именем wtB1

elseif widgetName == "wtB2" then

тут действия при нажатии на кнопку с именем wtB2

end

end

А здесь как то можно определить какая кнопка нажата левая или правая?

Изменено пользователем jedbez
Ссылка на комментарий
Поделиться на другие сайты

Какая кнопка нажимается - не знаю, можно ли определить или нет, но точно знаю, что можно повесить разные реакции на разные кнопки.

Ссылка на комментарий
Поделиться на другие сайты

Я некорректно выразился.

Обработка нажатия кнопок понятна и доступна, но необходимо определить какой клавишей мыши нажата кнопка.

Ссылка на комментарий
Поделиться на другие сайты

Я некорректно выразился.

Обработка нажатия кнопок понятна и доступна, но необходимо определить какой клавишей мыши нажата кнопка.

можно повесить разные реакции на разные кнопки.

Повесь на правую кнопку реакцию mouse_right_click.

Ссылка на комментарий
Поделиться на другие сайты

Плюс с реакцией нажатия кнопки приходит информация о том какие дополнительные кнопки были зажаты в момент нажатия (контрол, альт, шифт, может еще что-то)

Ссылка на комментарий
Поделиться на другие сайты

Зачем так получать имя, если есть params.sender?

у меня был немного другой пример кода (для чекбокса), где брался родитель и потом его имя, переделывать не стал, удалил только получение родителя

Ссылка на комментарий
Поделиться на другие сайты

wtB массив ссылающийся на виджеты

ах да назначение имени виджету через Widget:SetName( name )

Как правильно присвоить имя?

wtB:SetName( "wtB"..i ) ?

local i=1

local out="wtB"

wtB:SetName( out..i ) ?

local i=1

local out="wtB"

out=out..i

wtB:SetName( out ) ?

Не работает (

Ссылка на комментарий
Поделиться на другие сайты

	 wtPlayerList_Names[i]:SetName("PlayerList_Name"..i)

Любой из приведенных выше вариантов должен работать.

Ссылка на комментарий
Поделиться на другие сайты

что то такого плана:

local wtB={}
wtB[1]=wtMainPanel:GetChildChecked( "b", false )
wtB[1]:SetName( "wtB1" )

for i = 2, 10 do
wtB[i]=mainForm:CreateWidgetByDesc(wtB[1]:GetWidgetDesc())
wtB[i]:SetName( "wtB"..i ) 
wtMainPanel:AddChild(wtB[i])
end

Ссылка на комментарий
Поделиться на другие сайты

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...

Важная информация

Пользуясь сайтом, вы принимаете Условия использования