ActionScript-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;
    }
}

最新更新