Actionscript 3 对象仅在使用方法时才是空引用?
我有一个名为“target”的对象,其属性名为“movement”: 我的抽象目标类如下所示: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() {
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函数时已经实例化了一个运动对象吗
以后尝试使函数参数或函数作用域变量不与类作用域变量共享名称,以减少此类混淆。我添加了更多详细信息…我对格式表示歉意,在这个编辑器中似乎无法正确使用。嗯。。。如果列出的代码是完整的,那么看起来您实际上并没有将任何内容传递给MediumDemobility();这可以解释为什么目标对象是空的(当然也可以解释为什么它的移动是空的)。通过调用movement.mediumMove()(这就是接口的用途),您做得很对,但我认为您对mediumcombiness()的输入是正确的;这就是问题所在。