Actionscript 3 检索共享属性时工作进程正在获取null
出于某种原因,当我尝试从Actionscript 3 检索共享属性时工作进程正在获取null,actionscript-3,flash,worker,Actionscript 3,Flash,Worker,出于某种原因,当我尝试从工作者(在AS3中)接收共享属性时,结果总是空的。也就是说,我使用setSharedProperty()向工作者发送一个值,当我使用getSharedProperty()检索它时,它总是返回未定义的/null 下面是我设置的一个简单测试: package { import flash.display.Sprite; import flash.system.Worker; import flash.system.WorkerDomain;
工作者
(在AS3中)接收共享属性时,结果总是空的。也就是说,我使用setSharedProperty()
向工作者发送一个值,当我使用getSharedProperty()
检索它时,它总是返回未定义的/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);
}
}
}
当我跟踪消息时
,结果为空。虽然我的主要目标是制作一个AIR应用程序,但无论我是为AIR(3.7)还是Flash Player(11.6,出于某种原因,11.7不承认Flash.system.Worker是有效类)编译,我都会得到相同的结果
我正在通过FlashDevelop使用FlexSDK进行编译。有人知道出了什么问题吗,也许我的代码中遗漏了什么?FlashDevelop现在似乎完全支持调试工作人员,而在旧版本中则不是这样(您既不能中断,也不能跟踪内部工作人员)。AIR SDK workers的支持也取得了进展(我记得在发行版中工作的东西会在调试版本中中断)
我刚刚用AIR SDK 14版本(14.0.0.110)重新编译了您的示例
并用Shockwave Flash Debugger 14,0,0125和FlashDevelop 4.6.1.30进行了调试,得到了预期的结果:
[Starting debug session with FDB]
Created Worker 2
test
请注意,调试链(sdk/player/debugger)中任何非最新的元素都可能会给调试人员带来问题我对您的主要问题没有答案,但Flash 11.7无法识别类的问题可能是由于您的playerglobal.SWC或正在编译的SWF版本造成的。当前的SWF版本似乎是19,您可能需要指定一个包含Worker
功能的版本。啊,谢谢。在更新FlashDevelop(也更新了Flex和AIR SDK)之后,它现在可以编译11.7版。不过,主要问题仍然存在。在\u worker.setSharedProperty(“消息”,“测试”)之后添加跟踪(\u worker.getSharedProperty(“消息”))
。那你拿到房产了吗?如果没有,甚至不需要讨论函数initWorker
,因为我们可以在那之前确定问题开始。这确实有效。不过我做了一些实验,我想我已经得出结论,只有在调试模式下测试时才会发生这种情况。在发布模式下运行时,它成功地从worker中读取属性(我在没有跟踪的情况下测试了它,使用if语句和绘图到stage)。不过这真的很糟糕,因为我跟踪了很多东西来调试代码。然而,这个问题是否应该被视为解决了呢?这似乎是FD的一个问题。啊,很高兴知道!我现在不再经常使用Flash了,但我还是很感激你的回答!既然没有更好的方法可以做,我想我会标记它以表明问题已经解决,即使这在技术上不能回答问题(它只是通知我修复)。
[Starting debug session with FDB]
Created Worker 2
test