|
Форум Обсуждение аддонов Разработка аддонов WoW Страницы аддона |
Страницы аддона |
Всем привет! Сегодня я расскажу, как сделать динамические странички в аддоне. Это нужно чтобы создавать в аддоне очень много страничек нt добавляя фрейм и т.д
Инструкция по созданию toc файла - тык Ссылка на предыдущие статью - тык Скачать notepad++ - тык API функции - тык Для начала создадим фрейму на которой будем выводить наш текст. Code myframes = CreateFrame("FRAME","my_Frame",UIParent); Указываем размер фреймы. Code myframes:SetWidth(260); myframes:SetHeight(150); Задаем текстуру фрейме. Code myframes:SetBackdrop({bgFile = "Interface\\DialogFrame\\UI-DialogBox-Gold- Background", edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Gold-Border",}); И указываем позицию. Code myframes:SetPoint("CENTER"); Дальше, создаем текстовый фрейм. Code textframes = myframes:CreateFontString(nil, "OVERLAY", "GameTooltipText") Указываем позицию. Code textframes:SetPoint("CENTER", myframes, "CENTER", 0, 0) textframes:SetWidth(myframes:GetRight() - myframes:GetLeft()) textframes:SetJustifyH("CENTER") Я создал кнопку (у нас их будет 2). Code -- Кнопка 1 textframebuttons1 = CreateFrame("Button",nil,myframes,"OptionsButtonTemplate") textframebuttons1:Enable(true) Указываем размер. Code textframebuttons1:SetWidth(90) textframebuttons1:SetHeight(30) Задаем текст. Code textframebuttons1:SetText("Текст 1") Указываем позицию. Code textframebuttons1:SetPoint("CENTER",myframes,-60,50) И задаем действие при нажатии на кнопку. Code textframebuttons1:SetScript("OnClick",function() dinamtextframe("1") end) Такие же действия выполняем со 2 кнопкой. Code -- Кнопка 2 textframebuttons2 = CreateFrame("Button",nil,myframes,"OptionsButtonTemplate") textframebuttons2:Enable(true) textframebuttons2:SetWidth(90) textframebuttons2:SetHeight(30) textframebuttons2:SetText("Текст 2") textframebuttons2:SetPoint("CENTER",myframes,60,50) textframebuttons2:SetScript("OnClick",function() dinamtextframe("2") end) Дальше создаем функцию с всеми условиями. Code function dinamtextframe(msg) Делаем условие на 1 текст. Code if msg == "1" then textframes:SetText("Ты кто такой? Давай, до свидания ") Может кто-то заметил, что при создания текста я не использовал SetText, он будет находится в условии чтобы переключать странички. Делаем 2 условие. Code elseif msg == "2" then textframes:SetText("Гуси, гуси, га-га-га!\nЕсть хотите? Да-да-да") И задаем текст, который у нас будет изначально. Code else textframes:SetText("Начало") Закрываем функцию. Code end end Дальше создаем фрейму для обновления фреймы с текстом. Это нужно если фрейма изначально открыта. Code local textframes = CreateFrame("Frame") Дальше регистрируем ивент. Code textframes:RegisterEvent("VARIABLES_LOADED") И задаем событие. Code textframes:SetScript("OnEvent", dinamtextframe) Полный код: Code myframes = CreateFrame("FRAME","my_Frame",UIParent); myframes:SetWidth(260); myframes:SetHeight(150); myframes:SetBackdrop({bgFile = "Interface\\DialogFrame\\UI-DialogBox-Gold- Background", edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Gold-Border",}); myframes:SetPoint("CENTER"); textframes = myframes:CreateFontString(nil, "OVERLAY", "GameTooltipText") textframes:SetPoint("CENTER", myframes, "CENTER", 0, 0) textframes:SetWidth(myframes:GetRight() - myframes:GetLeft()) textframes:SetJustifyH("CENTER") -- Кнопка 1 textframebuttons1 = CreateFrame("Button",nil,myframes,"OptionsButtonTemplate") textframebuttons1:Enable(true) textframebuttons1:SetWidth(90) textframebuttons1:SetHeight(30) textframebuttons1:SetText("Текст 1") textframebuttons1:SetPoint("CENTER",myframes,-60,50) textframebuttons1:SetScript("OnClick",function() dinamtextframe("1") end) -- Кнопка 2 textframebuttons2 = CreateFrame("Button",nil,myframes,"OptionsButtonTemplate") textframebuttons2:Enable(true) textframebuttons2:SetWidth(90) textframebuttons2:SetHeight(30) textframebuttons2:SetText("Текст 2") textframebuttons2:SetPoint("CENTER",myframes,60,50) textframebuttons2:SetScript("OnClick",function() dinamtextframe("2") end) function dinamtextframe(msg) if msg == "1" then textframes:SetText("Ты кто такой? Давай, до свидания ") elseif msg == "2" then textframes:SetText("Гуси, гуси, га-га-га!\nЕсть хотите? Да-да-да") else textframes:SetText("Начало") end end local textframes = CreateFrame("Frame") textframes:RegisterEvent("VARIABLES_LOADED") textframes:SetScript("OnEvent", dinamtextframe) На этом все! Удачи вам.
Маме беркута привет!
|
| |||
| |||