0

アプリケーションを起動する前にサウンドと音楽の状態を読み取る関数を作成しようとしています。問題は、初回実行時にデータが記録されないことです。

最初に、ここから提案された JSON 関数を試してみましたが、次のエラーが発生しました。

グローバル 'saveTable' (nil 値) の呼び出しを試みます

ファイルが存在するかどうかをテストする方法はありますか?

次に、これを試しました:

-- THIS function is just to try to find the file.
-- Load Configurations
    function doesFileExist( fname, path )
        local results = false
        local filePath = system.pathForFile( fname, path )

        --filePath will be 'nil' if file doesn,t exist and the path is  "system.ResourceDirectory"
        if ( filePath ) then
            filePath = io.open( filePath, "r" )
        end

        if ( filePath ) then
            print( "File found: " .. fname )
            --clean up file handles
            filePath:close()
            results = true
        else
            print( "File does not exist: " .. fname )
        end

        return results
    end



    local fexist= doesFileExist("optionsTable.json","")

    if (fexist == false) then
        print (" optionsTable = nil")
        optionsTable = {}
        optionsTable.soundOn = true
        optionsTable.musicOn = true
        saveTable(optionsTable, "optionsTable.json")   <<<--- ERROR HERE
        print (" optionsTable Created")
    end

奇妙なことに、saveTable(optionsTable,"optionsTable.json") でエラーが発生しています。理由がわかりません。

初めての状況を処理する実用的なコードがあれば、それで十分です。ありがとう。

4

1 に答える 1

1

ファイルが存在するかどうかを確認するコードを次に示します。最初にファイルを開いて、存在するかどうかを確認する必要があります

function fileExists(fileName, base)
  assert(fileName, "fileName is missing")
  local base = base or system.ResourceDirectory
  local filePath = system.pathForFile( fileName, base )
  local exists = false

  if (filePath) then -- file may exist wont know until you open it
    local fileHandle = io.open( filePath, "r" )
    if (fileHandle) then -- nil if no file found
      exists = true
      io.close(fileHandle)
    end
  end

  return(exists)
end

そして使用のために

if fileExists("myGame.lua") then
  -- do something wonderful
end

詳細については、このリンクを参照してください。

于 2013-09-11T05:14:05.510 に答える