You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Adobe Flash开发的Adobe Air(安卓)应用中嵌入文本文件

嘿,我之前在做AIR安卓项目时刚好碰到过类似的需求,给你分享几个实用的方案,亲测有效:

方法一:将文本文件打包进AIR应用的资源目录(推荐)

这是最常用的静态资源嵌入方式,适合大容量文本数据:

  • 首先把你的文本数据文件(比如data.txt)放到Flash项目的源文件目录里(和你的.fla或主AS文件同层级即可)
  • 根据你用的开发工具,确保文件被纳入打包列表:
    • 如果你用Animate:打开「发布设置(AIR for Android)」,切换到「文件」标签,点击「添加文件」选中你的文本文件,这样打包APK时它会被自动包含进去
    • 如果你用Flash Builder:右键项目→「属性」→「Flex Build Packaging」→「AIR Android」→「打包」标签,在「要打包的文件」里添加该文本,设置「打包类型」为「嵌入的资源」
  • 然后在ActionScript里读取这个文件,因为它已经在应用的安装目录下,用File类就能直接访问:
import flash.filesystem.File;
import flash.filesystem.FileStream;
import flash.events.Event;

// 获取应用安装目录下的文本文件
var dataFile:File = File.applicationDirectory.resolvePath("data.txt");
var fileStream:FileStream = new FileStream();

// 异步读取文件(避免阻塞UI)
fileStream.addEventListener(Event.COMPLETE, onDataLoaded);
fileStream.openAsync(dataFile, FileMode.READ);

function onDataLoaded(e:Event):void {
    var stream:FileStream = e.target as FileStream;
    // 读取全部文本内容
    var textContent:String = stream.readUTFBytes(stream.bytesAvailable);
    stream.close();
    
    // 这里就可以处理你的数据了,比如解析JSON/XML
    trace("加载完成,数据长度:" + textContent.length);
}
方法二:直接把文本数据嵌入到ActionScript类中(适合小体量数据)

如果你的文本数据不算太大,也可以省去文件读取步骤,直接把内容硬编码到AS类里:

// 创建一个专门存常量的类
package {
    public class AppData {
        // 把你的文本数据直接粘贴在这里
        public static const STATIC_DATA:String = "你的全部文本内容...";
    }
}

之后在需要用数据的地方直接调用AppData.STATIC_DATA就行,这种方式启动就能用,不需要IO操作,但缺点是数据修改需要重新编译,且会增加SWF体积。

额外提醒
  • applicationDirectory是只读目录,刚好符合你「嵌入应用内、启动调用」的需求,因为安装后这里的文件不会被修改,非常适合存静态数据
  • 如果你的文本是JSON/XML格式,读取到字符串后可以用JSON.parse()或者XML(textContent)转换成对应的数据结构,处理起来更方便
  • 打包时一定要确认文本文件没有被排除,有些工具默认不会包含非SWF/AS的文件,手动添加很关键

内容的提问来源于stack exchange,提问作者Koby.G

火山引擎 最新活动