|
Форум Обсуждение аддонов Разработка аддонов WoW Сетка |
Сетка |
Здравствуйте! В эту пятницу мы будем делать "Сетку" на наш экран. Этот урок будет полезен для итогового аддона. Он не просто накладывает сетку на наш экран, но еще может регулировать размер клеток.
Инструкция по созданию toc файла - тык Ссылка на предыдущие статью - тык Скачать notepad++ - тык API функции - тык Создадим папку, toc файл и lua файл. Напомню, что toc файл называем так же как и папку с аддоном. Далее открываем lua файл и меняем кодировку, на UTF-8. После того как сменили кодировку пишем в нем: Code local blank = {bgFile="interface\\buttons\\white8x8"} -- Текстура. local index = GetCurrentResolution() local resolution = select(index, GetScreenResolutions()) local x,y = strsplit("x", resolution) local linesR = {} local linesL = {} local linesT = {} local linesB = {} r1 = CreateFrame("Frame","wAlignY",UIParent) -- Создание фреймы вертикальной красной полоски r1:SetBackdrop(blank) -- Текстуры r1:SetBackdropColor(1,0,0,1) -- Задает цвет текстуре, как и "Texture:SetVertexColor()" r1:SetSize(2,y) -- Толщина красной полоски по вертикали r1:SetPoint("CENTER",UIParent) -- Расположение table.insert(linesR,r1) table.insert(linesL,r1) local r2 = CreateFrame("Frame","wAlignX",r1) -- Создание фреймы горизонтальной красной полоски r2:SetBackdrop(blank) -- Текстуры r2:SetBackdropColor(1,0,0,1) -- Задает цвет текстуре, как и "Texture:SetVertexColor()" r2:SetSize(x,2) -- Толщина красной полоски по горизонтальной r2:SetPoint("CENTER",UIParent) -- Расположение table.insert(linesT,r2) table.insert(linesB,r2) r1:Hide() function lineUpdate(space,x,y) local numLinesX = (x/space) for i = 1,numLinesX do if not (linesR[i]) then local lR = r1:CreateTexture(nil,"OVERLAY") -- Создание текстуры. lR:SetSize(1,y) -- Толщина правых вертикальных полосок lR:SetTexture(0,0,0,0.5) -- Цвет правых вертикальных полосок lR:SetPoint("LEFT",linesR[i-1],"RIGHT",space,0) -- Позиция table.insert(linesR, lR) else if (i~=1) then linesR[i]:SetPoint("LEFT",linesR[i-1],"RIGHT",space,0) end end if not (linesL[i]) then local lL = r1:CreateTexture(nil,"OVERLAY") -- Создание текстуры. lL:SetSize(1,y) -- Толщина левых вертикальных полосок lL:SetTexture(0,0,0,0.5) -- Цвет левых вертикальных полосок lL:SetPoint("RIGHT",linesL[i-1],"LEFT",-space,0) -- Позиция table.insert(linesL, lL) else if (i~=1) then linesL[i]:SetPoint("RIGHT",linesL[i-1],"LEFT",-space,0) end end end local numLinesY = (y/space) for j = 1,numLinesY do if not (linesT[j]) then local lT = r2:CreateTexture(nil,"OVERLAY") -- Создание текстуры. lT:SetSize(x,1) -- Толщина верхних горизонтальных полосок lT:SetTexture(0,0,0,0.5) -- Цвет верхних горизонтальных полосок lT:SetPoint("BOTTOM",linesT[j-1],"TOP",0,space) -- Позиция table.insert(linesT, lT) else if (j~=1) then linesT[j]:SetPoint("BOTTOM",linesT[j-1],"TOP",0,space) end end if not (linesB[j]) then local lB = r2:CreateTexture(nil,"OVERLAY") -- Создание текстуры. lB:SetSize(x,1) -- Толщина нижних горизонтальных полосок lB:SetTexture(0,0,0,0.5) -- Цвет нижних горизонтальных полосок lB:SetPoint("TOP",linesB[j-1],"BOTTOM",0,-space) -- Позиция table.insert(linesB, lB) else if (j~=1) then linesB[j]:SetPoint("TOP",linesB[j-1],"BOTTOM",0,-space) end end end end lineUpdate(20,x,y) -- Размер клеточек SLASH_WALIGN1 = '/walign' -- Слеш команда. function SlashCmdList.WALIGN(msg, editbox) if (msg) and (type(tonumber(msg))=="number") then if (tonumber(msg)<=4) then print("Пожалуйста введите размер от 5.") -- Сообщение если размер введен ниже 5 else if not (r1:IsShown()) then r1:Show() end lineUpdate(msg,x,y) end else if not(r1:IsShown()) then r1:Show() else r1:Hide() end end end Code r1 = CreateFrame("Frame","wAlignY",UIParent) -- Создание фреймы вертикальной красной полоски Регистрирует нашу вертикальную полоску. Code r1:SetBackdropColor(1,0,0,1) -- Задает цвет текстуре, как и "Texture:SetVertexColor()" Задаем цвет текстурам у нас он будет красным. Code r1:SetSize(2,y) -- Толщина красной полоски по вертикали Размер красной вертикальной полоски по "Y" Code r1:SetPoint("CENTER",UIParent) -- Расположение Указываем расположение, у нас будет "Center" т.е центр. Code local r2 = CreateFrame("Frame","wAlignX",r1) -- Создание фреймы горизонтальной красной полоски Регистрирует нашу горизантальную полоску. Code r2:SetBackdropColor(1,0,0,1) -- Задает цвет текстуре, как и "Texture:SetVertexColor()" Задаем цвет текстурам у нас он будет красным. Code r2:SetSize(x,2) -- Толщина красной полоски по горизонтальной Размер красной горизонтальной полоски по "X" Code r2:SetPoint("CENTER",UIParent) Указываем расположение, у нас будет "Center" т.е центр. Code local lR = r1:CreateTexture(nil,"OVERLAY") -- Создание текстуры. Создание текстуры. Code lR:SetSize(1,y) Толщина правых вертикальных полосок Code lR:SetTexture(0,0,0,0.5) Цвет правых вертикальных полосок Code lR:SetPoint("LEFT",linesR[i-1],"RIGHT",space,0) Позиция Code local lL = r1:CreateTexture(nil,"OVERLAY") Создание текстуры. Code lL:SetSize(1,y) Толщина левых вертикальных полосок Code lL:SetTexture(0,0,0,0.5) Цвет левых вертикальных полосок Code lL:SetPoint("RIGHT",linesL[i-1],"LEFT",-space,0) Позиция Ну в общем и так далее В следующей статье мы будем делать меню. А потом будем делать итоговый аддон, а каким он будет пока секрет Прикрепления:
5968029.jpg
(181.5 Kb)
Маме беркута привет!
|
Quote (Adamas06) а собственно для чего это может пригодиться? Именно этот аддон может помочь разместить области интерфейса более аккуратно. А вообще, используя данный подход, можно размещать поверх экрана различных текстуры для стилизации интерфейса. Quote (jecasman) Учит открывать готовый .lua файл и копировать содержимое? No, thanks. Посмотри на ссылку аддона, которую дал vitaminwow: http://www.wowinterface.com/downloads/info6153-Align.html Коды совсем разные.
Сообщение # 6 написано 14.01.2012 в 01:11
|
| |||
| |||