出于某种原因,当我尝试从Worker
(在AS3中)接收共享属性时,结果始终为null。也就是说,我使用Worker
向setSharedProperty()
发送了一个值,当我使用getSharedProperty()
检索它时,它始终返回undefined
/ null
。
这是我设置的简单测试:
package
{
import flash.display.Sprite;
import flash.system.Worker;
import flash.system.WorkerDomain;
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(this.loaderInfo.bytes);
_worker.setSharedProperty("message", "test");
_worker.start();
}
private function initWorker():void
{
_worker = Worker.current;
var message:String = _worker.getSharedProperty("message");
trace(message);
}
}
}
当我追踪message
时,结果为空。虽然我的主要目标是创建一个AIR应用程序,但无论我是编译AIR(3.7)还是Flash Player(11.6,由于某种原因,11.7无法将flash.system.Worker识别为有效类),我都会得到相同的结果。
我正在使用Flex SDK通过FlashDevelop进行编译。有没有人知道什么是错的,也许我在代码中遗漏了什么?
答案 0 :(得分:1)
FlashDevelop现在似乎完全支持调试工作者,而旧版本的情况并非如此(你既不能破坏,也不能追踪工作人员)。 AIR SDK工作者支持也取得了进展(我记得在发布版中工作的东西会在调试版中破坏) 我刚刚使用AIR SDK 14发行版(14.0.0.110)重新编译了您的示例
air14_sdk_win/bin/mxmlc -swf-version=25 -debug=true Main.as
并使用Shockwave Flash Debugger 14,0,0,125和FlashDevelop 4.6.1.30对其进行了调试,得到了预期的结果:
[Starting debug session with FDB]
Created Worker 2
test
请注意,调试链中的任何元素都不是最新的(sdk / player / debugger)可能会导致调试工作程序出现问题