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」が含まれている場合は正しく埋め込まれません。何か案が?