看起来像我的IDE(FlashDevelop 4.2.3)对此负责。
为什么我不能编译这个小的代码?
我在班上覆盖X和Y,所以这就是为什么我需要super.x
。
public class SimpleSprite extends Sprite
{
override public function set x(value: Number): void
{
super.x -= 12;
//super.x = super.x - 12;
}
}
// or
public class SimpleSprite2 extends Sprite
{
public function get xx(): Number
{
return super.x;
}
public function set xx(value: Number): void
{
super.x = value;
}
public function SimpleSprite2()
{
xx -= 12;
super.x -= 12;
// Error: Syntax error: expecting semicolon before minusassign.
}
}
我知道我可以写super.x = super.x - 12;
,但是我懒惰,我不想2外观4这些不一致时,当我被语法错误击中时,我也非常习惯使用-=
的快捷方式
看起来像我的IDE(FlashDevelop 4.2.3)对此负责。
您的工作没有任何句法错误。您的代码在我的Flash Builder 4.7中正常工作。
但是,请记住instance.x -= value;
是
instance.x = instance.x - value;
//ie.
instance.[set]x = instance.[get]x - value;
我之所以提到这一点,是因为您的最高代码:
override public function set x(value: Number): void
{
super.x -= 12;
//super.x = super.x - 12;
}
让我认为您正在尝试做一些有趣的事情。您为什么要降低设置功能?
如果您需要为子类具有单独的X值,但是无法更改接口(即。您仍然希望用户能够说mySubClassInstance.x = 123.0;
)执行此操作:
public class DerivedSprite extends Sprite
{
protected var derivedX:Number;
public override function get x():Number
{
super.x = derivedX;
return derivedX;
}
public override function set x(value:Number):void
{
super.x = value;
derivedX = value;
}
public function DerivedSprite()
{
super();
derivedX = super.x;
}
}