|
Форум Обсуждение аддонов Разработка аддонов WoW Фрейм с обводкой и кнопками |
Фрейм с обводкой и кнопками |
Здравствуйте, сегодня мы рассмотрим реализацию фрейма с обводкой и кнопками.
Инструкция по созданию 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 Хоть я и описал каждую строку кода, но я опишу еще раз тут что они значат Code function SAY(text) -- Регистрация "SAY" SendChatMessage(text, "SAY", nil,nil); -- Параметры. end Создание параметра "say", это SendChatMessage, только мы его укоротили чтобы было удобнее 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 ) Кнопка. Описывать ее не буду, в комментариях все написано Далее открываем хмл файл и пишем там: 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" /> Задаем цвет обводки Вот и все, аддон вы можете скачать по ссылки ниже! Удачи! Прикрепления:
6283039.png
(15.8 Kb)
Маме беркута привет!
|
спасибо
Сообщение # 4 написано 23.01.2012 в 13:14
|
Nyll спс большое, но есть один вопрос: Как извенить размер фрейма в котором находятся кнопки. И как добавить кнопки? И ещё: как привязать скрипт к кнопке чтоб при нажатии он активировался ато у мя онипропадают када я вставляю скрипт (((
|
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
|
Как сделать под 3.3.5?
Добавлено (23.06.2012, 19:31) --------------------------------------------- Сорри, не поменял на 30305 Добавлено (23.06.2012, 21:45)
Пользуюсь гарант услугами pwlvl.ru
|
Спасибо большое.
Качественный сервер
Высокая работоспособность, много особенностей, лучший сервис!
Сообщение # 8 написано 23.06.2012 в 22:59
|
Один вопрос: Как увеличть размер самое фреймы, допустим я хочу сделать 5 кнопок.
Ах да... Почему когда я вписываю ещё одну кнопку с позицией ("CENTER", 0, +27), у меня потом вообще пустой фрейм?
Смерть - это стрела, пущенная в тебя, а жизнь - то мгновение, за которое она до тебя долетает.
Сообщение # 9 написано 06.08.2012 в 22:52
|
Уточню проблему, текстурка кнопки состоит из нескольких текстурок (нажата, отжата и тд...), как указать текстуру таким образом хз.- может помочь кто разобраться как сделать фрейм который можно будет передвигать курсором? =) |
| |||
| |||