【发布时间】:2014-05-04 21:00:04
【问题描述】:
我正在尝试加入 sqlite 支持以保存分数和一些标志。如果数据库存在,我需要打开它,然后根据数据库初始化游戏值。如果数据库不存在,我需要创建/初始化它。下面的代码可以编译,但由于未知原因崩溃。
package mygame;
<snip imports>
import sys.db.Types;
class ScoreDB extends sys.db.Object {
public var id : SId;
public var dbscore1 : SInt;
public var dbsound : SInt;
public var dbscore2 : SInt;
}
class mygame extends Sprite {
<snip var defines>
public function new () {
// start sqlite code
sys.db.Manager.initialize();
// db does exist
// then read values
// currentScore = score1.dbscore1;
// doSound = score1.dbsound;
// doScore = score1.dbscore2;
// db does not exist:
var cnx = sys.db.Sqlite.open("mybase.db");
sys.db.Manager.cnx = cnx;
sys.db.TableCreate.create(ScoreDB.manager);
var score1 = new ScoreDB();
score1.id = 0;
score1.dbscore1 = 0;
score1.dbsound = 0;
score1.dbscore2 = 0;
score1.insert();
currentScore = 0;
doSound = 0;
doScore = 0;
cnx.close();
// end sqlite code
super ();
initialize ();
construct ();
newGame ();
}
【问题讨论】:
-
您是否尝试过在调试模式下运行它以获取一些错误消息(如果它是 android,我有幸在 eclipse 中运行 openfl 创建的项目并使用它的 catlog)?另外,你在测试什么目标?
-
它是针对 android 调试的。我做了一个 logcat,但没有看到任何有用的东西。由于视力问题,我不使用 eclipse 或任何 gui、vi 和控制台。
-
这可能与具有锁定环境的 Android(或 iOS)有关,并且只有某些文件夹具有写入权限。如果 SQLite 尝试写入锁定的文件夹,我猜它会导致错误。我不确定在 OpenFL 中获取可写文件夹路径的最佳方法是什么,但我认为这将是接下来研究的最佳方法。