【问题标题】:1009 error on a movieclip that makes no sense没有意义的影片剪辑上的 1009 错误
【发布时间】:2014-03-13 17:54:20
【问题描述】:

我正在制作游戏,最初我是手动将英雄影片剪辑放置在舞台上的。现在我将英雄添加到容器中,并在 Main.as 构造函数中加载容器。

我收到此行的 1009 错误:

bulletOffset = 5 / _root.accuracy;

这里是英雄类的相关代码:

public class Hero extends MovieClip {

    private var radius:Number;

    //Bullet offset
    private var bulletOffset:Number;

    //Player variables
    private var walkingSpeed:int = 3;

    private var shootingRate:int = 120;

    private var s:int;

    //Making all of the items on the stage accessible by typing "_root.[ITEM]"
    private var _root:MovieClip;

    private var leftKeyDown:Boolean = false;
    private var upKeyDown:Boolean = false;
    private var rightKeyDown:Boolean = false;
    private var downKeyDown:Boolean = false;
    private var punchKeyDown:Boolean = false;

    //Player states (shooting, attacking etc)
    private var shooting:Boolean = false;

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

    private function beginClass(event:Event):void
    {

        //Determine the radius
        radius = this.width - 8;

        _root = MovieClip(root);

        bulletOffset = 5 / _root.accuracy;

             blablablabla

【问题讨论】:

    标签: actionscript-3 null runtime-error containers stage


    【解决方案1】:

    您正在收听错误的事件。 Event.ADDED 将在添加到任何显示列表时被触发。但是您需要等待Event.ADDED_TO_STAGE 才能使用root

    public function Hero() 
    {
        addEventListener(Event.ADDED_TO_STAGE, beginClass);
    }
    

    【讨论】:

    • 非常感谢!什么时候应该使用 Event.ADDED?
    • Event.ADDED 会在任何DisplayObject 添加到任何DisplayObjectContainer 时触发。这意味着它会在您调用addChildaddChildAt 时触发。如果将DisplayObject 添加到DisplayObjectContainer 导致DisplayObject 被添加到舞台(根),则 调用Event.ADDED_TO_STAGE。查看documentation,它可能会明确何时使用一个而不是另一个。
    猜你喜欢
    • 2014-04-13
    • 2018-10-14
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    相关资源
    最近更新 更多