Flash での IO の範囲はまだ限られています。「ローダー」への参照、またはより具体的な「ルート」の概念への参照 (引き続き使用できます) - これは、バイナリ データ オブジェクトがページ レベルで SWF にアクセス可能であることを前提としています。Flashがバイト配列を解析する方法について、1-2をもっと探しているようです。
これは長い話題であり、[私の意見では] 議論されすぎていますが、Flash は AMF を使用し、任意のホストからカスタム オブジェクトをインスタンス化するため、Native AS 3.0 である利用可能なクラスの大きなセットがあります (AIR や Flex は必要ありません)。 - バイナリの読み取り、書き込み、およびエンコードに使用できます。
以下は、AS 3.0 でシリアライゼーションがどのように機能するかを簡単に理解する必要がある Jr 開発者のために、少し前に私が書いたクラスの例です。
package {
import flash.display.*;
import flash.net.*;
import flash.events.*;
import flash.utils.*;
public class loadAndRead extends EventDispatcher {
private var ldr:Loader;
private var urq:URLRequest;
private var iba:ByteArray;
private var swf:String;
private var obj:*;
function loadAndRead() {
ldr = new Loader();
urq = new URLRequest(swf = 'anyswfanywhere.swf');
}
public function rd(d:*):void {
obj = d;
iba = obj['BTS'] as ByteArray() || ByteArray(obj['BTS']);
iba.uncompress()
iba.deflate();
iba.readUTFBytes();
iba.position = 0;
iba.uncompress();
iba.position = 0;
for each (var n:* in i.readObject())
{
if(n){trace(i.readObject()['n']+": "+n)
}
}
}
private function getSWF():void {
ldr.load(urq);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, ogs);
}
private function ogs(w:Event):void {
rd({L: ldr.contentLoaderInfo.bytes.length,
A: ldr.contentLoaderInfo.bytes.bytesAvailable,
T: ldr.contentLoaderInfo.contentType,
U: ldr.contentLoaderInfo.loaderURL,
BA: ldr.contentLoaderInfo.bytes.readUTF(),
BTS: ldr.contentLoaderInfo.bytes
});
}
}
}