5

出于某种原因,当我尝试从Worker(在 AS3 中)接收共享属性时,结果始终为空。也就是说,我向Workerusing发送一个值setSharedProperty(),当我使用 using 检索它时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 识别为有效类),我都会得到相同的结果.

我正在通过 FlashDevelop 使用 Flex SDK 进行编译。有谁知道出了什么问题,也许我的代码中遗漏了一些东西?

4

1 回答 1

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)中任何不是最新的元素都可能导致调试工作人员出现问题

于 2014-06-19T13:29:49.680 回答