繁体   English   中英

AS3错误1009:无法访问空对象引用的属性或方法

[英]AS3 Error 1009 : Cannot access a property or method of a null object reference

维护

package{
import flash.display.MovieClip;
import flash.events.*;

public class Main extends MovieClip {
    public var _root:MovieClip;

    public var monsterContainer:MovieClip = new MovieClip();


    public var delay = 30;

    public function Main(){
        addEventListener(Event.ADDED, beginClass);
        addEventListener(Event.ENTER_FRAME, enterFrameEvents);
    }

    function beginClass(e):void{
        _root = MovieClip(root);
    }

    function enterFrameEvents(e):void{

        addChild(monsterContainer);
        delay -= 1;
        if(delay <= 0){
            var spawn:Slime = new Slime();
            spawn.x = startPoint.x;
            spawn.y = startPoint.y;
            monsterContainer.addChild(spawn);
            delay = 30;
        }

    }
}

阿罗

package{
import flash.display.MovieClip;
import flash.events.*;

public class Arrow extends MovieClip {
    public var _root:MovieClip;

    public var facingID;

    public function Arrow(){
        addEventListener(Event.ADDED, beginClass);
        addEventListener(Event.ENTER_FRAME, enterFrameEvents);
    }

    function beginClass(e):void{
        _root = MovieClip(root);
    }

    function enterFrameEvents(e):void{

        trace(_root.monsterContainer == null);

    }
}

在输出中看起来像这样:

false 
false
false
false
false
TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at Arrow/enterFrameEvents()
TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at Arrow/enterFrameEvents()

起初它说false是因为trace(_root.monsterContainer == null),但是突然说到错误1009,当我使用ctrl + shift + enter时,它指向的是trace(_root.monsterContainer == null);

我尝试了2天,请帮忙

其他代码:(实际上可能不相关)

敌人

package{
import flash.display.MovieClip;
import flash.events.*;

public class Enemy extends MovieClip {
    public var _root:MovieClip;

    //Status
    public var monsterSpeed;
    public var facing = "Right";

    //CallingArrow
    public var down:Down = new Down();

    public function Enemy(){
        addEventListener(Event.ADDED, beginClass);
        addEventListener(Event.ENTER_FRAME, enterFrameEvents);
    }

    function beginClass(e):void{
        _root = MovieClip(root);
    }

    function enterFrameEvents(e):void{

        //Facing Movement
        if(_root.pausing == false){
            if(facing == "Right"){
                this.x += monsterSpeed;
            }else if(facing == "Left"){
                this.x -= monsterSpeed;
            }else if(facing == "Down"){
                this.y += monsterSpeed;
            }else if(facing == "Up"){
                this.y -= monsterSpeed;
            }
        }


    }
}

唐纳斯

package  {
import flash.display.MovieClip;
import flash.events.*;


public class Down extends Arrow {

    public function Down(){

        facingID = "Down";
    }
}

史莱姆斯

package  {
import flash.display.MovieClip;
import flash.events.*;


public class Slime extends Enemy {

    public function Slime(){

        monsterSpeed = 5;

    }
}

时间轴上没有其他代码,只需stop();

如果您需要文件(cs6): http : //www.mediafire.com/download/hz5tptkgftwdipw/Tower_Defense.rar

更改为此:

public function Arrow(){
    addEventListener(Event.ADDED, beginClass);
}

function beginClass(e):void{
    _root = MovieClip(root);
    addEventListener(Event.ENTER_FRAME, enterFrameEvents);
}

在您的代码中_root将为NULL ,因为您的对象可能未添加到同一框架中的舞台上,因此

function enterFrameEvents(e):void{

    trace(_root.monsterContainer == null);

}

将尝试访问NULL对象的monsterContainer属性。 因此,好老#1009

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM