打印

[AS3] AS3咋这么混球?超类的常量到子类里全变0?

复制内容到剪贴板
代码:
    public class Window extends Sprite
    {
        public const USE_TITLE:uint = 1
        public const USE_MINIMUM:uint = 2
        public const USE_RESUME:uint = 4
        public const USE_CLOSE:uint = 8
        ..................
    }
    public class AAA extends Window
    {
        
        ...................
    }
普通的子类与超类
当我要在子类中使用如上那些在超类中定义的常量时
发现一个非常让人愤怒的事情:
这些常量的值全部都变成了:0!

我要override还不让~
现在没有办法用超类的常量了
不知道是不是我自己代码写错了?
如果不是的话,那么----
AS3真他妈的混球

===========================
再测,发现是这样的:
由于超类的构造函数需要传入参数
子类的构造函数中有super( 400, 500, windowAdjuncts............ )
超类中那些常量写在这个super语句之后才可以访问到,而要是写在之前就全部是0

不幸的是,我就需要把那些常量运算一下再传入super.........
                                                  (下午3点入)


[ 本帖最后由 xbstu2006 于 2007-7-25 14:49 编辑 ]
我测试过了,没发现类似问题。应该是楼主RPWT,哈哈。
我这里测试没问题的,可以取到相应值...
我要威望....>
如果常量能override,那还叫常量么?
装b的时候,自己是感觉不到的

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!
顶起,回帖加在一楼了

TOP

那就别往构造函数写入参数了
再做一个function来写入参数
做人还是低调点好。。。

TOP

楼主的思路貌似有问题:你需要继承父类的常量,而又要用这些常量重新去构造父类。这就好比说,我在构造父类之前就需要得到它的成员,不太合逻辑。从你的需求来看,完全可以用静态常量来解决,如:
复制内容到剪贴板
代码:
    public class Window extends Sprite
    {
        public static const USE_TITLE:uint = 1
        public static const USE_MINIMUM:uint = 2
        public static const USE_RESUME:uint = 4
        public static const USE_CLOSE:uint = 8
        ..................
    }

TOP

carl兄很热心,谢谢啊
这个问题逻辑上说是没错----不应该用自己的成员来构造自己
但各位应该能看得出这些常量参数不过是一些数字而已
我将他们定义为常量是为了代码编写的方便
(不然每写一次变量都要查一次表到底数字是多少)
并且这也是ADOBE本身就经常使用的技巧
----将数字用常量表示之后,一旦有输入错误FB就可以检出并且报错

这个问题大概没什么讨论价值了
我只能在代码中直接使用这些常量的值了

TOP

super在AS3里不强调写在子类构造的第一句,但是在JAVA里一定要写在子类构造函数的第一句。

TOP