Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 检索共享属性时工作进程正在获取null_Actionscript 3_Flash_Worker - Fatal编程技术网

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