updateScore无效

时间:2013-07-26 11:10:52

标签: android lua corona

我的updateScore有问题,我的功能就是用户第一次玩游戏。

它将创建名为myFile.txt的文件以记录分数,现在要执行的代码是(如果是读者)以查看文件是否存在,如果不存在,它将转到我的 else 如果已有文件,那么我的内容应该有得分值,那么我可以用它来比较并得到我的高分。

问题是我的内容总是返回nil值,因此你玩的时候总得到的分数会取代应该是我的高分的分数,我不知道我做错了什么。

这是我的代码

function updateScore()

    local path = system.pathForFile( "myfile.txt", system.DocumentsDirectory )
    local reader = io.open( path, "r" )
    local file = io.open( path, "w" )

    if reader then

        reader:close()
        local reader1 = io.open( path, "r" )
        local contents = reader1:read("*n")


        if (stopscore == false) then
            score = score + 1
            scoreText.text = "score: " .. score
            scoreText:setReferencePoint(display.CenterLeftReferencePoint)
            scoreText.x = 0
            scoreText.y = 30
        end

        if (stopscore == true) then

            if (contents == nil) then
                local file = io.open( path, "w" )
                file:write(score)
                file:flush()
                file:close()
                timer.pause(timer1)
                director:changeScene( "menu", "downFlip" )

            else

                if (contents < score) then
                    file:write(score)
                    file:flush()
                    file:close()
                    timer.pause(timer1)
                    director:changeScene( "menu", "downFlip" )
                else
                    file:write(contents)
                    file:flush()
                    file:close()
                    timer.pause(timer1)
                    director:changeScene( "menu", "downFlip" )
                end

            end
        end

    else

        local file1 = io.open( path, "w" )
        local walaVal=0
        file1:write(walaVal)
        file1:close()

        if (stopscore == false) then
            score = score + 1
            scoreText.text = "score: " .. score
            scoreText:setReferencePoint(display.CenterLeftReferencePoint)
            scoreText.x = 0
            scoreText.y = 30
            print(contents)
        end

        if (stopscore == true) then
            local file = io.open( path, "w" )
            file:write(score)
            file:flush()
            file:close()
            timer.pause(timer1)
            director:changeScene( "menu", "downFlip" )
        end

    end
end

1 个答案:

答案 0 :(得分:0)

内容返回nil,因为此代码出现问题 local file = io.open( path, "w" ) 当你调用它时会删除文件的所有内容来解决这个问题当你调用像本地file = io.open(path)这样的本地文件时你必须删除模式“w”当你花时间更新分数时,你应该再次使用模式“w”来进一步理解我所说的我会写的并解释代码。

--first check the file if exist
   local path = system.pathForFile( "myfile.txt", system.DocumentsDirectory )
   local file = io.open(path)

-- if file exist check the content and read the score else create a file and write the score

  if file then
      local reader = io.open( path, "r" )
      local contents = reader:read("*n")
-- if content is less than myScore Update the Score
     if contents < myScore then
     file = io.open(path,"w")
     file:write(myScore)
         file:flush()
         file:close()
     end
 else
    file = io.open(path,"w")
    file:write(myScore)
    file:flush()
    file:close()
 end

希望我能为你解释清楚:))