在Android设备上安装并运行我的应用程序后,当我点击高分时,如果第一次运行我的问题的应用程序是此代码,则应该发布“highscore:0”
local path = system.pathForFile( "myfile.txt", system.DocumentsDirectory )
似乎Android设备中没有system.DocumentsDirectory我需要在写入问题之前创建文本文件问题是我的路径我需要它来创建myfile.text所以什么可以替代system.DocumentsDirectory?我不能使用system.ResourceDirectory使其唯一可读不可写
这是我的highscore.lua,如果用户在安装后玩游戏之前检查高分1,则使用
local path = system.pathForFile( "myfile.txt", system.DocumentsDirectory )
local file = io.open( path, "r" )
local savedData = file:read( "*n" )
if (savedData == nil) then
file=io.open(path,"w")
local newVal="0"
file:write(newVal)
file:flush()
local scoreText = display.newText("score: " .. newVal, 0, 0, "BorisBlackBloxx", 50)
scoreText:setReferencePoint(display.CenterLeftReferencePoint)
scoreText.x = 0
scoreText.y = 30
else
local scoreText = display.newText("score: " .. savedData, 0, 0, "BorisBlackBloxx", 50)
scoreText:setReferencePoint(display.CenterLeftReferencePoint)
scoreText.x = 0
scoreText.y = 30
end
这是我的game.lua使用它,如果用户第一次玩游戏
local path = system.pathForFile( "myfile.txt", system.DocumentsDirectory )
local reader = io.open( path, "r" )
local contents = reader:read("*n")
local file = io.open( path, "w" )
if (contents == nil) then
local walaVal="0"
file:write(walaVal)
file:flush()
else
file:write(contents)
file:flush()
end
答案 0 :(得分:0)
你能打印出路径返回的内容吗?我使用DocumentsDirectory
来创建新文件。
请注意,许多(如果不是所有)多平台框架的另一个常见问题是ResourceDirectory
实际上是Android上的拉链。因此,访问文件更复杂,如果您需要修改文件,则会出现问题,因为您无法在未先解压缩文件的情况下修改zip文件。
这实际上是在Corona的 Gotcha 部分中记录的。 http://docs.coronalabs.com/api/library/system/pathForFile.html
修改强> 有关Open函数的信息,请参阅API:http://docs.coronalabs.com/api/library/io/open.html 我确信错误是因为你的标志。 使用: file = io.open(path,“w +”)
Corona的各种开放模式:
“r”:读取模式(默认值);文件指针放在 文件的开头。
“w”:只写模式;如果文件存在,则覆盖文件。如果该文件不存在,则创建一个用于写入的新文件。
“a”:追加模式(只写);如果文件存在,则文件指针位于文件的末尾。也就是说,文件处于追加模式。 如果该文件不存在,则会创建一个用于写入的新文件。
“r +”:更新模式(读/写),保留所有以前的数据;文件指针将位于文件的开头。如果是文件 存在,只有在明确写入时才会被覆盖。
“w +”:更新模式(读/写),删除所有先前的数据;如果文件存在,则覆盖现有文件。如果文件没有 存在,创建一个新的阅读和写作文件。
“a +”:追加更新模式(读/写);保留以前的数据,只允许在文件末尾写入。文件 如果文件存在,指针位于文件的末尾。该文件打开 在追加模式下。如果该文件不存在,则会创建一个新文件 阅读和写作。
模式字符串最后也可以有一个'b',这在某些系统中需要以二进制模式打开文件。这个字符串正是标准C函数fopen中使用的字符串。
答案 1 :(得分:0)
您可以使用这些功能轻松保存和加载文件。我总是与他们合作,并没有任何问题。
require( "json" )
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
function loadTable(filename)
local path = system.pathForFile( filename, system.DocumentsDirectory)
local myTable = {}
local file = io.open( path, "r" )
local contents = ""
if file then
-- read all contents of file into a string
local contents = file:read( "*a" )
myTable = json.decode(contents);
io.close( file )
return myTable
end
return nil
end
-- The part related to your code :
local scores = loadTable( "scores.json" )
if scores == nil then
-- First time in the game
scores = {}
scores.highScore = 0
saveTable( scores, "scores.json" )
end