• Страница 1 из 1
  • 1
Страницы аддона
Nyll
Всем привет! Сегодня я расскажу, как сделать динамические странички в аддоне. Это нужно чтобы создавать в аддоне очень много страничек н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)


На этом все! Удачи вам.
Маме беркута привет!
Сообщение # 1 отредактировано Juline - Понедельник, 25.06.2012, 15:44
Forumwowjpp
Скаут
Прикольно вышло up
Сообщение # 2 написано 26.06.2012 в 18:28
  • Страница 1 из 1
  • 1
Поиск: