我正在尝试使用 Apache Flex SDK 4.10.0 中的 mxmlc 编译器编译 SWF 文件。该程序只是从一个名为asset1.txt 的文件中加载并显示文本。
这是我的代码:
package
{
import flash.events.Event;
import flash.display.Sprite;
import flash.text.TextField;
import mx.core.ByteArrayAsset;
[SWF(width="20", height="20", backgroundColor="#ff00fa")]
public class Main extends Sprite
{
[Embed("asset1.txt", mimeType="application/octet-stream")]
private static var asset:Class;
public function Main()
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
var assetBytes:ByteArrayAsset = ByteArrayAsset(new asset());
var assetString:String = assetBytes.readUTFBytes(assetBytes.length);
removeEventListener(Event.ADDED_TO_STAGE, init);
var tf:TextField = new TextField();
tf.text = assetString;
addChild(tf);
}
}
}
问题是当asset1.txt中包含的文本长度小于4字节时,嵌入文件中的所有字节都被空字节替换,否则一切正常。例如,当文本文件包含“abcd”或“abcde”时,该文本文件正确嵌入到 SWF 中,但当它包含“ab”或“abc”时,则不正确。任何想法?