Я использую базу данных, чтобы сохранить рекорд. В сцене смена сцены я делаю файл для отображения рекорда. Сначала я делаю базу данных, затем таблицу, а затем извлекаю запись. Убедитесь, что теперь сделанный результат больше, чем существующий в базе данных. Обновите первую существующую запись.Corona Database Работает на симуляторе, но не на устройстве Android, останавливается на предыдущей сцене, используя раскадровку
Его работа прекрасна на симуляторе, но на устройстве он держится на предыдущей сцене и никогда не меняет сцену на файл рекордов.
Это была смена сцены до внедрения базы данных.
local myData = require("myData")
-----------------------------------------------------------------------------
-- DATABASE
-- SQLite
-----------------------------------------------------------------------------
--Include sqlite
require "sqlite3"
local path = system.pathForFile("myDataBaseASDF.db", system.DocumentsDirectory)
db = sqlite3.open(path)
--Handle the applicationExit event to close the db
local function onSystemEvent(event)
if(event.type == "applicationExit") then
db:close()
end
end
local tablesetup = [[CREATE TABLE IF NOT EXISTS highScoreClassic (id INTEGER PRIMARY KEY, Time, Taps);]]
print("DB Created")
db:exec(tablesetup)
local dbRows = 0
local dbTaps = 0
local dbTime = "00:00:00"
--print all the table contents
for row in db:nrows("SELECT * FROM highScoreClassic WHERE id=1;") do
dbRows = dbRows + 1
dbTaps = row.Taps
dbTime = row.Time
print("Row Taken")
end
function isHighscore()
if myData.currentScore > dbTime then
return true
elseif myData.currentScore == dbTime and myData.taps > dbTaps then
return true
elseif myData.currentScore == dbTime and myData.taps < dbTaps then
return false
else return false end
end
function saveToDataBase()
print("updating")
local q = [[UPDATE highScoreClassic SET Time=']]..myData.currentScore..[[', Taps=]]..myData.taps..[[ WHERE id=1;]]
db:exec(q)
end
function saveToDataBaseFirstTime()
print("inserting")
local tablefill =[[INSERT INTO highScoreClassic VALUES (NULL, ']]..myData.currentScore..[[',']]..myData.taps..[['); ]]
db:exec(tablefill)
end
if (dbRows > 0) then
if (isHighscore()) then
print(dbTime, dbTaps)
myData.highScore = true
saveToDataBase()
else
myData.highScore = false
print("No HighScore")
end
else
saveToDataBaseFirstTime()
end
--setup the system listener to catch applicationExit
Runtime:addEventListener("system", onSystemEvent)