2014-10-17 2 views
2

Я хотел бы объединить переменную с таблицей в файле с именем items.json. Мои атрибуты внутри файлов называются «pos1_name», «pos2_name» и т. Д. Поэтому я хотел бы использовать номер в имени атрибута в качестве переменной. Я пробовал: item.pos..i.._name, но он не работает.Конкатенировать json-файл с переменной

items = VarLoad.loadTable("items.json") 

    for i=1,7 do 
      --var ="1" 
      --print(table.concat(items,"",2)) 
       if items.pos1=="1" then 
         item[i] = display.newImageRect("items/"..items.pos1_name..".png", 80 , 80) 
         item[i].x = holder[i].x+10 
         item[i].anchorX=0 
         item[i].y=holder[i].y 
         itemGroup:insert (item[i]) 
         item[i].destination="item1" 
         item[i]:addEventListener("touch", onSwitchPress) 

         item_bigsize[i] = display.newImageRect("items/"..items.pos1_name..".png", 240 , 240) 
         item_bigsize[i].x = 950 
         item_bigsize[i].anchorX=0 
         item_bigsize[i].y=display.contentCenterY-130 
         group:insert (item_bigsize[i]) 
         item_bigsize[i].isVisible=true  


       end 
     i=i+1 
    end 
+0

Какую ошибку вы получаете и что он печатает? Попробуйте добавить 'print (" items/".. items.pos1_name ..". Png ")' и отчитаться. –

+0

"items /" .. items.pos1_name .. ". Png" работает очень хорошо! То, что я пытаюсь сделать, это объединить «items.pos..i .._ name». В нем говорится: Попытка объединиться с полем? (значение nil) –

ответ

3

Мои атрибуты внутри файлов, называются «pos1_name», «pos2_name», и т.д ... Так что я хотел бы использовать номер в имени атрибута, в качестве переменной. Я попытался: item.pos..i .._ name, но это не сработает.

Вы должны использовать полный стол обозначения: items.pos1_name является аббревиатурой для items['pos1_name'], так что если вам нужно сгенерировать ключ динамически, вы можете использовать что-то вроде этого:

print(items['pos'..i..'name']) 
Смежные вопросы