Haxe / OpenFL应用程序定位flash / html5 / air(桌面)。如何处理文件系统数据写入/读取?

时间:2014-10-13 14:30:13

标签: haxe openfl

我正在开发一款需要定位闪光/空气的应用,理想情况下是html5。此应用程序具有在文件系统中写入数据的功能。 我已经开始使用Haxe / OpenFL(这是我的第一次体验)。

据我所知,flash和html5无法访问本地用户的文件系统来写入和读取数据。因此,这些版本将通过在云中存储数据来交换此功能。

但AIR总是有可能操作文件系统。 所以我现在有两个问题:

  1. 是否可以将Haxe / OpenFL项目打包到AIR应用程序中,以及 做一个合适的.air安装程序?或者我应该使用某种类型的 cpp / c ++替代品?在这种情况下,最佳做法是什么?
  2. OpenFL / Haxe的哪个API让我有可能     在文件系统上写数据?

3 个答案:

答案 0 :(得分:2)

不同的平台具有不同的实现来保存/加载用户数据。您应该#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实现进行文件访问,可以按照these steps进行操作。
如果使用haxe,它有自己的实现针对不同的目标,即“#if”会找到“flash” “分支是真的,即使你打算用AIR包装你的flash-app;所以你必须使用sharedobject 我认为将cpp编译为桌面目标更明智,而不是稍后用“flash +环绕AIR”。

答案 1 :(得分:1)

  1. 它应该是可行的,虽然没有尝试过。
  2. 结帐sys.FileSystemsys.io

答案 2 :(得分:1)

本指南应引导您完成使用AIR http://www.openfl.org/archive/community/installing-openfl/building-air/

发布iOS和Android的过程