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

时间:2013-02-25 19:07:11

标签: actionscript-3 null

我一直在努力解决这个问题,我只是想知道什么,我只是在我的“角色”和“糖果”之间添加了hitTest。在开始工作,然后我得到一个错误#1009无法访问空对象引用的属性或方法。 在“糖果”第49行

“糖果”课程

public class Candy extends MovieClip
{
    public var leadingMover:Mover;
    public var mainColliderCandy:Character;
    public var hit:MovieClip;
    public var hitParent:*;
    public var candy:MovieClip;


    public function Candy()
    {
        addEventListener(Event.ADDED_TO_STAGE, allLoaded);
    }

    private function allLoaded(event:Event):void
    {
            hitParent = event.currentTarget.parent;
            candy = MovieClip(this.parent.getChildByName(this.name));
            hit = hitCandy_mc;
            addEventListener(Event.ENTER_FRAME, update);
    }

    private function update(event:Event):void
    {
        if(leadingMover)
        {
            y +=leadingMover.speed;
        }
        else
        {
            leadingMover = Mover(parent.getChildByName("bg_mc"));
        }

        if(mainColliderCandy && candy)
        {
            if(hit.hitTestObject(mainColliderCandy))
            {

            //mainColliderCandy.collidedWithCandy(this);

                if(candy)
                {
                    //mainColliderCandy = null;
                    this.parent.removeChild(candy);
                }   
            removeEventListener(Event.ENTER_FRAME, update);
            }
        }
        else
        {
            mainColliderCandy = Character(parent.getChildByName("character_mc"));
        }
    }

}

}

谢谢你!

1 个答案:

答案 0 :(得分:0)

如果您的错误在行

this.parent.removeChild(candy);

this.parentnull。我想你应该添加

candy.removeEventListener(Event.ENTER_FRAME, update);

在大括号内,在第50行。我真的不明白你的代码应该做什么,但它可能是你想在线上做的

removeEventListener(Event.ENTER_FRAME, update);

但它会删除this上的侦听器而不是删除的糖果。