をワーカーByteArray.clear()
と共有しても何もしないようです。ByteArray
例として、次のコードを取り上げます。
package
{
import flash.display.Sprite;
import flash.system.Worker;
import flash.system.WorkerDomain;
import flash.utils.ByteArray;
public class Main extends Sprite
{
private var _worker:Worker;
public function Main():void
{
if (Worker.current.isPrimordial)
{
initMain();
}
else
{
initWorker();
}
}
private function initMain():void
{
_worker = WorkerDomain.current.createWorker(loaderInfo.bytes, true);
var bytes:ByteArray = new ByteArray();
bytes.writeUnsignedInt(12836439);
bytes.shareable = true;
_worker.setSharedProperty("bytes", bytes);
bytes.clear();
trace(bytes.length);
}
private function initWorker():void
{
//worker stuff would go here
}
}
}
これはトレースします4
が、そうあるべきです0
。bytes.shareable = true;
または のいずれかをコメントアウトすると、完全に機能しますが、組み合わせによってメソッド_worker.setSharedProperty("bytes", bytes);
が無効になっているようです。clear()
ただし、興味深いことに、これは AIR 用にコンパイルする場合にのみ発生します。Flash Player 用にコンパイルする場合、クリアは正常に機能し、このコードはトレースし0
ます。
何が起きているか知っている人はいますか?