2015-09-13 5 views
0

Я использую модуль loadsave Роба Miracle для моей игры Corona SDKLoadsave модуль - Corona SDK

У меня есть этот маленький запрос на него

Если я сохранить таблицу JSon на mydata.lua

M={} 
M.highScore = 0 
M.levels=1 

loadsave.saveTable(M,"settings.json") 

return M 

Теперь, если в game.lua ... Я делаю это ....

function gameOver 
    If gamewin == false then 
    mydata.level = mydata.level + 1 

gamewin = true 

loadsave.saveTable(mydata,"settings.json") 

end 

Теперь, если я это модуль loadsave перезаписать весь json-файл и, следовательно, удалить параметр высокой оценки оттуда?

Помогите

ответ

0

Да. Из the source из saveTable определения:

function saveTable(t, filename) 
    local path = system.pathForFile(filename, system.DocumentsDirectory) 
    local file = io.open(path, "w") 
    if file then 
     local contents = json.encode(t) 
     file:write(contents) 
     io.close(file) 
     return true 
    else 
     return false 
    end 
end 

Как вы можете видеть, функция использует io.open(path, "w") записать в файл. Поскольку io.open создает совершенно новый файл при использовании в режиме записи (параметр w), старый файл будет перезаписан.

Вы можете вместо этого загружать содержимое из файла JSON-первых, перед записью над новыми значениями:

function gameOver() 
    local mydata = loadsave.loadTable "settings.json" 
    if gamewin == false then 
     mydata.level = mydata.level + 1 
     gamewin = true 
    . 
    . 
    . 
    loadsave.saveTable(mydata,"settings.json") 
end 
+0

Вы имеете в виду, если я загрузить таблицу .... она не будет перезаписывать весь файл? – user5331438

+0

@ user5331438 Он все равно перезапишет файл. Но вы не потеряете предыдущие настройки. – hjpotter92

+0

ОК спасибо, это то, что я хотел .... – user5331438