【问题标题】:AS3 Base class is final error when I didn't set it that way当我没有这样设置时,AS3 基类是最终错误
【发布时间】:2012-01-06 00:55:47
【问题描述】:

我在使用 AIR for iOS 播放器的项目中收到“基类是最终的”错误。问题是我没有将基类设置为最终类。也只有当我使用 AIR 作为播放器时才会发生这种情况。

主 - 文档类

package {
    import flash.display.*;
    import parentfolder.*;
    import parentfolder.childfolder.*;

    public class Main extends MovieClip {

        public function Main () {
            addChild (new SplashScreen ());
        }
    }
}

屏幕 - 在与文档类位于同一文件夹中的父文件夹内

package parentfolder {
    import flash.display.*;

    public class Screen extends Sprite {
        public function Screen () {

        }
    }
}

SplashScreen - 在父文件夹内

package parentfolder.childfolder {
    import flash.display.*;
    import parentfolder.*;

    public class SplashScreen extends Screen {

    }
}

所以...代码中的任何地方都没有“最终”,并且问题被隔离在 AIR 播放器中。

【问题讨论】:

    标签: actionscript-3 air base-class


    【解决方案1】:

    AIR 中有一个名为 Screen 的类,它被声明为 final。您在导入时使用了.*notation,因此flash.display.Screen 被假定为SplashScreen 的基类,而不是您的自定义parentfolder.Screen

    由于这个类只存在于 AIR 中,所以在其他播放器中不会出现此问题。

    您应该始终使用完全限定的导入(每个类一个)以避免这样的命名冲突。

    【讨论】:

    • 哦,我想我把它改成 BaseScreen 吧。
    【解决方案2】:

    您的问题与Screen 有关。

    你正试图在这一行中扩展它

    public class SplashScreen extends Screen
    

    屏幕被声明为public final class Screen

    因此,您不能从 final 的类继承。

    引用 Adob​​e Docs,

    指定一个方法不能被覆盖或者一个类不能被 扩展。尝试覆盖方法或扩展类,标记为 最终导致错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-07
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      • 2022-08-14
      • 2021-07-01
      • 2014-07-03
      • 2022-10-20
      相关资源
      最近更新 更多