2

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 バイト未満の場合、埋め込みファイルのすべてのバイトが null バイトに置き換えられ、それ以外の場合はすべて機能することです。たとえば、テキスト ファイルに「abcd」または「abcde」が含まれている場合、テキスト ファイルは SWF に正しく埋め込まれますが、「ab」または「abc」が含まれている場合は正しく埋め込まれません。何か案が?

4

1 に答える 1