Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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 在as3中执行命中测试时出现循环错误_Actionscript 3_Hittest - Fatal编程技术网

Actionscript 3 在as3中执行命中测试时出现循环错误

Actionscript 3 在as3中执行命中测试时出现循环错误,actionscript-3,hittest,Actionscript 3,Hittest,因此,我有以下代码: public function hitTest1(e:Event) : void { if (hitTestObject(target.hit)){ gotoAndStop(2,"Scene 1"); removeEventListener(Event.ENTER_FRAME, hitTest1); } } 其中目标是要被击中的物体,击中是该物体上一层的符号。当我运行代码时,一次又一次地出现

因此,我有以下代码:

public function hitTest1(e:Event) : void
    {
        if (hitTestObject(target.hit)){
        gotoAndStop(2,"Scene 1");
        removeEventListener(Event.ENTER_FRAME, hitTest1);

        }
    }
其中目标是要被击中的物体,击中是该物体上一层的符号。当我运行代码时,一次又一次地出现这个错误

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at com.Mass.basics1::Asteroid/hitTest1()
注意:Asteroid是包含所有这些代码的.as文件

以下是代码的其余部分供参考:

package com.Mass.basics1
{

import flash.display.MovieClip;
import flash.display.Stage;
import flash.events.Event;

public class Asteroid extends MovieClip
{
    public var target:Cosmo;
    private var stageRef:Stage;
    private var speed:Number;
    // public var ourAsteroid:Asteroid = new Asteroid(stage);


    public function Asteroid(stageRef:Stage)
    {


        this.stageRef = stageRef;
        setupAsteroid(true);

        addEventListener(Event.ENTER_FRAME, loop, false, 0, true);
        addEventListener(Event.ENTER_FRAME, hitTest1);

    }

    public function hitTest1(e:Event):void
    {
        if (hitTestObject(target.hit))
        {
            gotoAndStop(2,"Scene 1");
            removeEventListener(Event.ENTER_FRAME, hitTest1);

        }
    }


    public function setupAsteroid(randomizeY:Boolean = false):void
    {
        //inline conditional, looks complicated but it's not.
        y = randomizeY ? Math.random() * stageRef.stageHeight:0;
        x = Math.random() * stageRef.stageWidth;

        rotation = Math.random() * 360;
        scaleX = Math.random();
        scaleY = scaleX;

        speed = 20 + Math.random() * 10;
    }

    public function loop(e:Event):void
    {
        y +=  speed;

        if (y > stageRef.stageHeight)
        {
            setupAsteroid();

        }


    }

}
}

那么,“目标”对象在哪里?您只是声明一个变量,而不是创建对象或设置引用。它是一个公共变量,所以您可能正在其他地方设置引用?在这种情况下,请确保在调用hitTest1函数之前指定了一个引用…

很抱歉响应太晚,另一个对象是一个行星,它有自己的类文件。然后我创建一个Planet类型的变量“Target”,然后进行命中测试。@Rizzla:最好以这样的问题作为评论。您只能用正确的答案来回答。@SidSmith在调用hitTest1之前,请确保检查行星对象是否已创建,因为错误告诉您这不是…这很奇怪,因为它是先创建的,但现在我知道了错误的含义,也许我可以找出它。谢谢