【问题标题】:AddChild and removeChild in ActionScript 3 does not work properlyActionScript 3 中的 AddChild 和 removeChild 无法正常工作
【发布时间】:2014-03-06 23:28:49
【问题描述】:

我想知道为什么我通过在我的 as3 代码中使用 removeChild() 函数得到Error #1009: Cannot access a property or method of a null object reference,如下所示:

public class MyGame extends MovieClip{

    private var myMovieClip:MovieClip;

    public function add():void{
        myMovieClip = new MyMovieClip();
        addChild(myMovieClip);
    }

    public function remove():void{
        removeChild(myMovieClip);
    }

}

在删除函数中,我想删除 myMovieClip 对象,然后创建一个新对象并将其用于继续我的应用程序。

任何想法将不胜感激 谢谢

【问题讨论】:

    标签: flash actionscript-3 actionscript


    【解决方案1】:

    在您调用 remove 时,myMovieClip 似乎为 null...

    这可能会更安全一些

    function DetachFromParent(mc:MovieClip):void
    {
       if(mc!= null && mc.parent != null)
       {
           mc.parent.removeChild(mc);
       }
    }
    

    【讨论】:

    • 谢谢,但问题不在于,因为我从 MovieClip 扩展的对象在舞台上显示了一些东西,如果我在 addChild() 之后立即使用 removeChild() 函数,那东西就会消失,但问题是我想在另一个函数中删除我的movieClip(上面示例中的removeChild)。谢谢
    • 通常,如果 myMovieClip == null、myMovieClip.parent != this 或 myMovieClip.parent == null,则只会在此实例中引发错误。这就是为什么这个函数应该考虑所有这些行为......
    • 是的,我知道,但我的问题是到底是什么问题,我应该补充一点,我在代码中添加了你的函数,但我得到了完全相同的错误
    • 这里发生了一些奇怪的事情,你能提供一个带有错误的小示例项目 fla 吗?
    • 我将提供一个简单的版本
    【解决方案2】:

    您需要检查是否甚至需要删除myMovieClip

    public function remove():void{
        if(myMovieClip) // myMovieClip is not null or undefined, remvove it
            removeChild(myMovieClip);
    }
    

    【讨论】:

    • 正如 JTtheGeek 所说,您还需要检查 myMovieClip 是否有父级。否则,他第二次调用 remove() 将导致空指针。
    • 谢谢,但问题不在于,因为我从 MovieClip 扩展的对象在舞台上显示了一些东西,如果我在 addChild() 之后立即使用 removeChild() 函数,那东西就会消失,但问题是我想在另一个函数中删除我的movieClip(上面示例中的removeChild)。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 2021-01-19
    • 2015-09-03
    • 2011-12-20
    相关资源
    最近更新 更多