访问ActionScript库项目中的资产/资源文件



我正在使用ActionScript库项目在Mobile和Desktop ActionScript项目之间共享代码和资产/资源。

库项目已通过"库路径"选项卡上的"添加项目"选项添加到另外两个项目中,链接类型为"合并到代码中",其中的所有类都可以由其他项目访问并正常工作。

然而,它包含一个SQLite数据库文件,我想在第一次加载应用程序时将其复制到目标系统上的File.applicationStorageDirectory,并且我不知道如何在库项目中获得对该文件的引用以将其复制出去。

db文件的位置是:LibraryProj-src/database/dbFile.db,我认为使用file.applicationDirectory,然后在swf中添加一个路径可以访问它,但以下测试都不表明该文件存在。

var test:File;
test = File.applicationDirectory.resolvePath("app:/src/database/dbFileDb.db"); 
trace("test.exists==" + test.exists); 
test = File.applicationDirectory.resolvePath("src/database/dbFileDb.db"); 
trace("test.exists==" + test.exists);
test = File.applicationDirectory.resolvePath("database/dbFileDb.db"); 
trace("test.exists==" + test.exists); 
test = File.applicationDirectory.resolvePath("dbFileDb.db"); 
trace("test.exists==" + test.exists);

这是将资源/资产文件从包含合并库的swf中复制到应用程序存储目录中的正确方法吗?以这种方式共享图书馆项目的资源/资产是否可能?

如有任何建议,我们将不胜感激。

在对在AS3中使用[Embed]标记进行了更多研究后,我现在发现这是我应该用来使文件可用于消费项目的东西(我以前只将其用于图像,没有考虑将其用于其他文件类型)。

[Embed('igniteDb.db', mimeType="application/octet-stream")]
public static const myReferenceDbFile:Class;

要将文件复制到File.applicationStorageDirectory,我使用以下代码。它将嵌入的文件转换为字节数组,然后通过FileStream类将其写入目标文件。

//write the embedded database file data into app user files directory
var bundleDbBytes:ByteArray;
bundleDbBytes = new myReferenceDbFile();//gets a reference to the embedded db file
var outputDbFile:File = File.applicationStorageDirectory.resolvePath(DB_FILE_NAME);
var fileStream:FileStream = new FileStream();
fileStream.open(outputDbFile, FileMode.UPDATE);
fileStream.writeBytes(bundleDbBytes);
fileStream.close();

嘿,很快,数据库就可以使用了。

最新更新