Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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
Multithreading as3工作人员因未知原因出现1009类型错误_Multithreading_Actionscript 3 - Fatal编程技术网

Multithreading as3工作人员因未知原因出现1009类型错误

Multithreading as3工作人员因未知原因出现1009类型错误,multithreading,actionscript-3,Multithreading,Actionscript 3,我正在编写一个AS3脚本,尝试在其中启动一个线程。当我尝试的时候,我总是得到下面的1009错误。我正在密切关注互联网上的一个howto页面。我正在使用(我想)flash的11.4版 TypeError: Error #1009: Cannot access a property or method of a null object reference. 这是指将swfBytes分配给This.loaderInfo.bytes的行 package somepackage { impor

我正在编写一个AS3脚本,尝试在其中启动一个线程。当我尝试的时候,我总是得到下面的1009错误。我正在密切关注互联网上的一个howto页面。我正在使用(我想)flash的11.4版

TypeError: Error #1009: Cannot access a property or method of a null
object reference.
这是指将swfBytes分配给This.loaderInfo.bytes的行

package somepackage {

    import flash.system.MessageChannel;
    import flash.system.Worker;
    import flash.system.WorkerDomain;
    import flash.events.Event;
    import flash.utils.ByteArray;

    public class SomeClass  extends Sprite{

        public var mainToWorker:MessageChannel;
        public var workerToMain:MessageChannel;
        public var worker:Worker;



        public function SomeClass() {
            // constructor code

            if (Worker.current.isPrimordial) {
                var swfBytes:ByteArray = this.loaderInfo.bytes;// HERE

                worker = WorkerDomain.current.createWorker( swfBytes );
                mainToWorker = Worker.current.createMessageChannel(worker);
                workerToMain = worker.createMessageChannel(Worker.current);

                worker.setSharedProperty("mainToWorker", mainToWorker);
                worker.setSharedProperty("workerToMain", workerToMain);

                //workerToMain.addEventListener(Event.CHANNEL_MESSAGE, onWorkerToMain);

                //worker.start();
            }
            else {
                mainToWorker = Worker.current.getSharedProperty("mainToWorker");
                workerToMain = Worker.current.getSharedProperty("workerToMain");

                //mainToWorker.addEventListener("mainToWorker", onMainToWorker);
            }


        }

    }


}
如果有人以前看到过,或者知道我做错了什么,我会非常感激

我将其实例化为一个更大的类组的一部分。我认为这可能是我的问题,所以我在根场景的“actions”脚本页面上自己实例化了这个类。我用的是Flash CS6。我所指的“行动”页面上没有太多内容

var ai:SomeClass = new SomeClass();
addChild(ai);
编辑1: 在这里,我包含了一行“addEventListener”。这段代码似乎在调试模式下工作,但如果我只是定期播放电影就不行了。如果我定期播放,我会再次出现1009错误,可能是因为跟踪后的线路。我可以用什么来代替“事件。添加到”阶段,以使其能够运行

package somepackage {

    public class SomeClass extends Sprite{

        public var mainToWorker:MessageChannel;
        public var workerToMain:MessageChannel;
        public var worker:Worker;

        public function SomeClass() {

            if (Worker.current.isPrimordial) {

                this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);

            }

        }

        public function onAddedToStage(e:Event):void {

            this.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);

            trace(this.loaderInfo);

            var swfBytes:ByteArray = this.loaderInfo.bytes;

            worker = WorkerDomain.current.createWorker( swfBytes );

            mainToWorker = Worker.current.createMessageChannel(worker);
            workerToMain = worker.createMessageChannel(Worker.current);

            worker.setSharedProperty("mainToWorker", mainToWorker);
            worker.setSharedProperty("workerToMain", workerToMain);

            workerToMain.addEventListener(Event.CHANNEL_MESSAGE, onWorkerToMain);

            worker.start();
        }


    }


}

不确定这是否会修复它,但是否尝试添加新关键字?var ai:SomeClass=新的SomeClass();啊,是的,那是个打字错误。我现在就解决这个问题。很可能this.loaderInfo为null,因此您无法访问bytes属性。在虚线之前跟踪它:
Trace(this.loaderInfo)是的,trace(this.loaderInfo)只是说'null',我稍微编辑了我的原始问题。现在,当我在调试模式下运行程序时,它似乎可以工作,而如果我在正常模式下运行它,它就不能工作。我在
this.loaderInfo
中添加了一个事件侦听器,它等待
event.Complete
,但结果相同。调试器工作,而常规运行不工作。