2014-12-24 2 views
2

그래서 나는 루아 테이블에 대한 정보를 쏟아 부었다.Lua 테이블에서 데이터를 추출 중, WoW addon

local profiles = { 
{ text = "Profile 1", name = "Profile 1", func = fuction() loadProfile("Profile 1");, INT = .5, STR = .5, AGI = .5, CRIT = .5, HASTE = .5, MAS = .5, MS = .5, VERS = .5}, 
{ text = "Profile 2", name = "Profile 2", INT = .6, STR = .6, AGI = .6, CRIT = .6, HASTE = .6, MAS = .6, MS = .6, VERS = .6}, 
{ text = "Profile 3", name = "Profile 3", INT = .7, STR = .7, AGI = .7, CRIT = .7, HASTE = .7, MAS = .7, MS = .7, VERS = .7}, 
{ text = "Profile 4", name = "Profile 4", INT = .8, STR = .8, AGI = .8, CRIT = .8, HASTE = .8, MAS = .8, MS = .8, VERS = .8}, 
} 

function loadProfile(name) 
--Loop through table using pairs 
    --Once name is found, load INT into INTELLECTSTAT, etc 
end 

local profilesDropDown = CreateFrame("Frame", nil, ActualValue, "UIDropDownMenuTemplate") 
menuFrame:SetPoint("TOPLEFT", ActualValue, 300, -40) 
EasyMenu(profiles, profilesDropDown, ActualValue, 300 , -40, "Profiles"); 

당신은 내가 사용자가 그 메뉴 항목의 기능을 트리거 이러한 메뉴 항목 중 하나를 클릭 할 때이 경우 loadProfile에,에서 정보를로드에 붙어있어 볼 수 있듯이.

다음으로 이름을 찾고있는 테이블을 반복해야한다고 생각하고 일단 모든 변수를로드했으나 가장 좋은 방법으로 테이블을 구성하는 경우에도이를 수행 할 방법이 확실하지 않습니다. 양철통.

마지막으로 나는 함수 호출의 관점에서 DropDown에 대한 문서를 이해하는 데 어려움을 겪고 있으며 올바르게 처리했는지 궁금합니다. (하단의 예는 http://www.wowwiki.com/API_EasyMenu입니다.

사전 도움을 주셔서 감사합니다!

+1

문제점을 이해하지 못합니다. "변수로드"란 무엇을 의미합니까? "INTELECTSTAT"이란 무엇입니까? 테이블을 반복 할 때 무엇이 ​​잘못 되었습니까? – hugomg

답변

1

GUI를 "비즈니스 로직"과 혼합하는 것은 우아하지 않습니다.

첫째, 프로파일을 별도의 테이블합니다, 그리고

local profiles = { 
    ["Profile 1"] = { 
    INT = .5, STR = .5, AGI = .5, 
    }, 
    ["Profile 2"] = { 
    INT = .6, STR = .6, AGI = .6, 
    }, 
} 

을 따라서 귀하의 메뉴 항목의 총수 :

local function loadProfile(_, prof) 
    INTELLECTSTAT = prof.INT 
end 

local menuItems = { 
    { text = "Profile 1", func = loadProfile, arg1 = profiles["Profile 1"] }, 
    { text = "Profile 2", func = loadProfile, arg1 = profiles["Profile 2"] }, 
} 
... 
EasyMenu(menuItems, ...) 

(쉽게 같이 손으로 그 일의 프로그래밍 방식 대신에 메뉴 아이템을 구축 할 수 있습니다 나는 여기에서했다.)

나는 WoW에 익숙하지 않다. 링크 된 사이트의 정보를 가져 왔습니다. 메뉴 콜백 have the signature (self, arg1, arg2, checked)이 표시됩니다.

관련 문제