• Страница 1 из 1
  • 1
Форум » Обсуждение аддонов » Разработка аддонов WoW » Фрейм с обводкой и кнопками
Фрейм с обводкой и кнопками
Nyll
Здравствуйте, сегодня мы рассмотрим реализацию фрейма с обводкой и кнопками.



Инструкция по созданию toc файла - тык
Ссылка на предыдущие статью - тык
Скачать notepad++ - тык
API функции - тык

Создаем папку для аддона, у меня она будет UImenu, в ней 3 файла UImenu.xml, lua, toc.
Открываем файл Lua, и меняем кодировку на UTF-8, после чего записываем туда код:

Code
function SAY(text) -- Регистрация "SAY"
    SendChatMessage(text, "SAY", nil,nil); -- Параметры.
end
function UImenu_OnLoad(self) -- Функция загрузки эвента
       self:RegisterEvent("VARIABLES_LOADED"); -- Регистрация эвента
end
function UImenu_OnEnter(self) -- Активация эвента
end
UImenu_settings = { -- Стандартные опции
       show = true, -- Открыта
       lock = false, -- Блокировка: Выключена.
       alpha = 1 -- Прозрачность
};
function UImenu_Init() -- Загрузка настроек
      UImenu_Frame:SetAlpha(UImenu_settings.alpha); -- Задаем прозрачность из "alpha = 1"
end
function UImenu_OnEvent(self, event, ...) -- Включение эвента
       if ( event == "VARIABLES_LOADED" ) then -- Эвент    
           UImenu_Init(); -- Запуск функции "UImenu_Init"
end
Button = CreateFrame("Button", "UImenu_Button1", UImenu_Frame, "UIPanelButtonTemplate") -- Создание фреймы кнопки
Button:SetWidth(80) -- Ширина
Button:SetHeight(25) -- Высота
Button:SetPoint("CENTER", 0, 0) -- Позиция
Button:SetText("Макрос 1") -- Текст на кнопки
Button:RegisterForClicks("AnyUp") -- Клик
Button:SetScript("OnClick", function() -- Запускаем событие при клики.
SAY("Текст макроса 1"); -- текст макроса.
end )

Button = CreateFrame("Button", "UImenu_Button2", UImenu_Frame, "UIPanelButtonTemplate") -- Создание фреймы кнопки
Button:SetWidth(80) -- Ширина
Button:SetHeight(25) -- Высота
Button:SetPoint("CENTER", 0, -27) -- Позиция
Button:SetText("Макрос 2") -- Текст на кнопки
Button:RegisterForClicks("AnyUp") -- Клик
Button:SetScript("OnClick", function() -- Запускаем событие при клики.
SAY("Текст макроса 2"); -- текст макроса.
end )
end


Хоть я и описал каждую строку кода, но я опишу еще раз тут что они значат smile

Code
function SAY(text) -- Регистрация "SAY"
SendChatMessage(text, "SAY", nil,nil); -- Параметры.
end

Создание параметра "say", это SendChatMessage, только мы его укоротили чтобы было удобнее smile

Code
function UImenu_OnLoad(self) -- Функция загрузки эвента
self:RegisterEvent("VARIABLES_LOADED"); -- Регистрация эвента
end

Загрузка и регистрация эвента при входе в мир.

Code
function UImenu_OnEnter(self) -- Активация эвента
end

Актевируем эвент.

Code
UImenu_settings = { -- Стандартные опции
show = true, -- Открыта
lock = false, -- Блокировка: Выключена.
alpha = 1 -- Прозрачность
};

Изначальные опции.
show = true - Делает так чтобы наша фрейма была открыта.
lock = false - Блокиратор панели, изначально выключено если поставить аргумент " true" панель будет заблокирована.
alpha = 1 - Прозрачность нашей панели.

Code
function UImenu_Init() -- Загрузка настроек
UImenu_Frame:SetAlpha(UImenu_settings.alpha); -- Задаем прозрачность из "alpha = 1"
end

Загружаем настройки из UImenu_settings

Code
function UImenu_OnEvent(self, event, ...) -- Включение эвента
if ( event == "VARIABLES_LOADED" ) then -- Эвент    
UImenu_Init(); -- Запуск функции "UImenu_Init"
end

Актевирываем наш эвент.

Code
Button = CreateFrame("Button", "UImenu_Button1", UImenu_Frame, "UIPanelButtonTemplate") -- Создание фреймы кнопки
Button:SetWidth(80) -- Ширина
Button:SetHeight(25) -- Высота
Button:SetPoint("CENTER", 0, 0) -- Позиция
Button:SetText("Макрос 1") -- Текст на кнопки
Button:RegisterForClicks("AnyUp") -- Клик
Button:SetScript("OnClick", function() -- Запускаем событие при клики.
SAY("Текст макроса 1"); -- текст макроса.
end )

Кнопка. Описывать ее не буду, в комментариях все написано smile

Далее открываем хмл файл и пишем там:
Code
<UI xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/..\FrameXML\UI.xsd">
       <Frame name="UImenu_Frame" toplevel="true" frameStrata="LOW" enableMouse="true" movable="true" parent="UIParent" clampedToScreen="true">
           <Size>
               <AbsDimension x="120" y="100" />
           </Size>
           <Anchors>
               <Anchor point="TOP" />
           </Anchors>
           <Backdrop edgeFile="Interface\Tooltips\UI-Tooltip-Border" bgFile="Interface\Tooltips\UI-Tooltip-Background">
               <BackgroundInsets>
                   <AbsInset left="4" right="4" top="4" bottom="4" />
               </BackgroundInsets>
               <EdgeSize>
                   <AbsValue val="16" />
               </EdgeSize>
               <Color r="0" g="0" b="0" a="0.4" />
               <BorderColor r="0" g="0" b="0" a="0.8" />
           </Backdrop>
           <Layers>
               <Layer level="OVERLAY">
                   <FontString name="$parent_Text" inherits="GameFontNormal">
                       <Anchors>
                           <Anchor point="CENTER" />
                       </Anchors>
                   </FontString>
               </Layer>
           </Layers>
           <Scripts>
               <OnLoad>
                   UImenu_OnLoad(self);
               </OnLoad>
               <OnMouseDown>
                   if ( button == "LeftButton" and not UImenu_Options.lock ) then
                       self:StartMoving();
                       self.isMoving = true;
                   elseif ( button == "RightButton" ) then
                       UImenu_Options_Toggle();
                   end
               </OnMouseDown>
               <OnMouseUp>
                   if ( self.isMoving )then
                       self:StopMovingOrSizing();
                       self.isMoving = false;
                   end
               </OnMouseUp>
               <OnHide>
                   if ( self.isMoving ) then
                       self:StopMovingOrSizing();
                       self.isMoving = false;
                   end
               </OnHide>
               <OnEvent>
                   UImenu_OnEvent(self, event, ...)
               </OnEvent>
           </Scripts>
       </Frame>
</UI>


Code
            <Color r="0" g="0" b="0" a="0.4" />
               <BorderColor r="0" g="0" b="0" a="0.8" />

Задаем цвет обводки

Вот и все, аддон вы можете скачать по ссылки ниже! Удачи!


[download]UImenu - 4.3
[/download]
Прикрепления: 6283039.png (15.8 Kb)
Маме беркута привет!
Сообщение # 1 отредактировано Nyll - Пятница, 24.02.2012, 12:10
DaTweekaz
Скаут
up
Сообщение # 2 написано 21.01.2012 в 01:34
Mercan
Скаут
thumb

______________________________________________________________


Сообщение # 3 написано 21.01.2012 в 12:27
Kickker
Рыцарь
shock спасибо
Сообщение # 4 написано 23.01.2012 в 13:14
Dekiller
Скаут
Nyll спс большое, но есть один вопрос: Как извенить размер фрейма в котором находятся кнопки. И как добавить кнопки? И ещё: как привязать скрипт к кнопке чтоб при нажатии он активировался ато у мя онипропадают када я вставляю скрипт (((
Сообщение # 5 отредактировано Dekiller - Среда, 13.06.2012, 15:18
Vladyxxa
Капрал
Quote (Dekiller)
Как извенить размер фрейма в котором находятся кнопки.

загляни сюда, тут такой-же фрейм, посмотри че в них отличается, протестируй.
Quote (Dekiller)
И как добавить кнопки?

в lua документе добавь это
Code
Button = CreateFrame("Button", "UImenu_Button1", UImenu_Frame, "UIPanelButtonTemplate") -- Создание фреймы кнопки
Button:SetWidth(80) -- Ширина
Button:SetHeight(25) -- Высота
Button:SetPoint("CENTER", 0, 0) -- Позиция
Button:SetText("Макрос 1") -- Текст на кнопки
Button:RegisterForClicks("AnyUp") -- Клик
Button:SetScript("OnClick", function() -- Запускаем событие при клики.
SAY("Текст макроса 1"); -- текст макроса.
end )

обрати внимание сюда
Code
Button:SetPoint("CENTER", 0, 0) -- Позиция

если дружишь с математикой укажи правильные координаты, что-бы было красиво, или сделай все каряво, это уже как ты хочешь:)
Quote (Dekiller)
И ещё: как привязать скрипт к кнопке чтоб при нажатии он активировался ато у мя онипропадают када я вставляю скрипт (((

создай отдельную функцию с тем скриптом
Code
function "name"
--скрипт твой--
end

Code
SAY("Текст макроса 1"); -- текст макроса.

всунь сюда название скрипта.
Надеюсь все понятно:)
Сообщение # 6 написано 17.06.2012 в 05:59
0niwone
WoW-Carnge <Dev>
Как сделать под 3.3.5?

Добавлено (23.06.2012, 19:31)
---------------------------------------------
Сорри, не поменял на 30305 shy

Добавлено (23.06.2012, 21:45)
---------------------------------------------
Nyll или Vladyxxa, как сделать так чтобы можно было перемещать это окошко?

Пользуюсь гарант услугами pwlvl.ru
Сообщение # 7 отредактировано 0niwone - Суббота, 23.06.2012, 19:46
Dimasta_d
Сержант
Спасибо большое. up
Качественный сервер
Высокая работоспособность, много особенностей, лучший сервис!
Сообщение # 8 написано 23.06.2012 в 22:59
Self_Killing
Скаут
Один вопрос: Как увеличть размер самое фреймы, допустим я хочу сделать 5 кнопок.
Ах да... Почему когда я вписываю ещё одну кнопку с позицией ("CENTER", 0, +27), у меня потом вообще пустой фрейм?
Смерть - это стрела, пущенная в тебя, а жизнь - то мгновение, за которое она до тебя долетает.
Сообщение # 9 написано 06.08.2012 в 22:52
Vladyxxa
Капрал
Quote (Self_Killing)
("CENTER", 0, +27)

лол же, тебе не кажется? думаю в этом и есть ответ)
Сообщение # 10 отредактировано Vladyxxa - Вторник, 07.08.2012, 04:07
sollertis
Скаут
Хочу изменить стандартную текстурку кнопки ( или тектового поля)
Уточню проблему, текстурка кнопки состоит из нескольких текстурок (нажата, отжата и тд...), как указать текстуру таким образом хз.-

-- нашел ответ на просторах вовинтерфейс
может помочь кто разобраться как сделать фрейм который можно будет передвигать курсором? =)
Сообщение # 11 отредактировано sollertis - Суббота, 23.02.2013, 03:00
Форум » Обсуждение аддонов » Разработка аддонов WoW » Фрейм с обводкой и кнопками
  • Страница 1 из 1
  • 1
Поиск: