当我与工作人员共享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
。
有人知道发生了什么事吗?