Actionscript 3 对象仅在使用方法时才是空引用?

Actionscript 3 对象仅在使用方法时才是空引用?,actionscript-3,Actionscript 3,我有一个名为“target”的对象,其属性名为“movement”: 我的抽象目标类如下所示: package { import flash.display.Sprite; public class AbstractTarget extends Sprite { protected var __movement:IMovement; public function AbstractTarget() {

我有一个名为“target”的对象,其属性名为“movement”:

我的抽象目标类如下所示:

package 
{
    import flash.display.Sprite;

    public class AbstractTarget extends Sprite
    {
        protected var __movement:IMovement;

        public function AbstractTarget()
        {
        }

        public function set movement(value:IMovement):void
        {
            __movement = value;
        }

        public function get movement():IMovement
        {
            return __movement;
        }


    }
}
package {
    import flash.events.Event;

    public class ZigZagMovement implements IMovement
        {
            private var __target:Object;

            public function ZigZagMovement(target:Object)
            {
                __target = target;
            }



            public function mediumMove():void
            {
                // movement code
            }


        }
    }
我的“运动”类如下所示:

package 
{
    import flash.display.Sprite;

    public class AbstractTarget extends Sprite
    {
        protected var __movement:IMovement;

        public function AbstractTarget()
        {
        }

        public function set movement(value:IMovement):void
        {
            __movement = value;
        }

        public function get movement():IMovement
        {
            return __movement;
        }


    }
}
package {
    import flash.events.Event;

    public class ZigZagMovement implements IMovement
        {
            private var __target:Object;

            public function ZigZagMovement(target:Object)
            {
                __target = target;
            }



            public function mediumMove():void
            {
                // movement code
            }


        }
    }
奇怪的是,当我追踪“target”和“target.movement”时,我得到了我想要的东西……但如果我想说,请写:

target.movement.mediumMove();

movement.mediumMove()


然后目标和“移动”(局部变量)都跟踪到null???

我想我们需要更多的信息。在代码示例或解释中,我没有看到一些东西:

  • 传递给中等难度函数的具体对象是什么?它显然不是曲折运动,因为这是抽象目标的运动成员变量
  • 什么时候实例化AbstractTarget的具体子类?AbstractTarget的具体子类是什么?你没有发布任何代码。你确定它在传递给MediumDemobility函数时已经实例化了一个运动对象吗
听起来,您单独测试的AbstractTarget子类有一个IMovement,但不是您传递给MediumDemobility函数的那个,但是如果没有更多的信息,就很难说了

(将此设置为社区wiki,以防我遗漏某些内容)

编辑:使用新信息--

看起来您有一个名为“target”的类级变量,您正在将移动分配给该变量,并且在mediumDemobility()函数签名中还有一个名为“target”的参数,并且您实际上没有将类级目标对象传递到函数中。结果是,当MediumDestion试图确定target的值时,它为null,因为它查看的是param而不是类级别的变量。这可能就是如何在start()函数中跟踪target和target.movement,但在mediumdefestion中不获取任何值的方法


以后尝试使函数参数或函数作用域变量不与类作用域变量共享名称,以减少此类混淆。

我添加了更多详细信息…我对格式表示歉意,在这个编辑器中似乎无法正确使用。嗯。。。如果列出的代码是完整的,那么看起来您实际上并没有将任何内容传递给MediumDemobility();这可以解释为什么目标对象是空的(当然也可以解释为什么它的移动是空的)。通过调用movement.mediumMove()(这就是接口的用途),您做得很对,但我认为您对mediumcombiness()的输入是正确的;这就是问题所在。