不同的平台有不同的实现来保存/加载用户数据。您应该#if
为所有目标平台提供所有可能的选项。
例如:
#if cpp
import haxe.io.Eof;
import sys.FileSystem;
import sys.io.File;
import sys.io.FileOutput;
import sys.io.FileInput;
#else if flash
import flash.net.SharedObject;
import flash.net.SharedObjectFlushStatus;
import flash.events.NetStatusEvent;
#end
class FileIO {
public function SaveData() : Void {
#if cpp
var Fout : FileOutput = null;
try {
myFout = sys.io.File.write("c:\mypath\myfile.name", false);
myFout.writeInt32(100);
[.....]
#else if flash
var shObj : SharedObject = null;
try {
shObj = SharedObject.getLocal("mySHODATA");
var ret : String = shObj.flush(MinFileSize);
[......]
#end
}
}
等等。flash AIR,长话短说只是 - 几乎 - 一个用于桌面执行的 flash 包装器。将其想象为桌面的 swf 容器(而不是在 Web 浏览器中实例化 swf 容器)。所以AIR-wrapped app == flash/swf app。如果您想使用 AIR 实现来访问文件,您可以按照以下步骤进行操作。
如果你使用haxe,它对不同的目标有自己的实现,即“#if”会发现“flash”分支为真,即使你打算AIR-wrap你的flash-app;所以你必须使用共享对象。
我认为针对桌面目标编译 cpp 更明智,而不是稍后使用“flash + wrap around with AIR”。