2013-09-11 2 views
1

я в настоящее время есть куча коробок, которые выглядят похоже наИспользование Lua для индекса XML объектов

<Texture name="uiBox01"> 
    *Other content* 
</Texture> 

Это продолжается в течение 18 коробок (uiBox18). В Lua я способен ссылающиеся на босс и изменение его цвета с помощью

uiBox01:SetVertexColor(r,g,b) 

Проблемы, я могу и не нужна больше коробка для операции. Данная операция может использовать 2 коробки на первом проходе и, возможно, 8 на следующем. В качестве таковой он должен быть динамическим, а не статическим.

В конце концов, я хотел бы использовать массив с Lua таким образом, что

uiBox[1] = uiBox01 --something similar to this 

, чтобы я мог более эффективно указать следующий индекс. Любая помощь приветствуется!

EDIT: XML, используемый WoW UI XML, очень похож на базовый XML.

+0

Это «Lua», а не «LUA» –

+0

Также нам нужна дополнительная информация, например, какая библиотека XML вы используете. –

+0

Добавлен XML, который я использую. – user2379150

ответ

0

Я не уверен, правильно ли получил ваш вопрос. Я предполагаю, что вы хотите, чтобы иметь возможность ссылаться на поле с использованием индекса в массиве, а не на имя переменной.

i=5 -- set from somewhere,maybe a loop 
-- after some time 
myBox = boxes[i] 

Я не знаком с WoW, но я полагаю, что uiBox01 глобальная переменная, созданная по WoW каким-то образом.

В глобальных переменных Lua хранятся в массиве _G, индекс - это имя переменной. Так

uiBox01 == _G['uiBox01'] -- returns true 

Так следующее должно работать для вас

i=5 -- set from somewhere,maybe a loop 
-- after some time 
myBox = _G['uiBox'..i] 

Расширение его заботиться о предваряя нулю, если я это одна цифра

i=5 -- set from somewhere,maybe a loop 
-- after some time 
myBox = _G['uiBox'.. (i < 10 and '0' or '') .. i] -- concatenate zero in middle if i<10 

Позвольте мне знать, если вы искали что-то другое.

+1

Или просто 'string.format ('uiBox% 02d', i)'. –

+0

+1 для полковника Тридцать два импровизации. – robinkc

Смежные вопросы