当内容长度小于 4 个字节时,无法在 SWF 文件中嵌入资源



我正在尝试使用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"时则不会。知道吗?

可能是Flex版本的一个错误,我使用Flex 4.6测试您的代码,运行良好,请尝试使用不同版本的编译器。希望对有所帮助

最新更新