Sun*_*nny 10 flash actionscript actionscript-3 extend
我有一个动作脚本3库项目"BG",它链接到类BGClass.BG包含一个实例名称为"bg"的Sprite,同样BGClass也有一个公共bg属性.所以这个类看起来像这样:
public class BGCass extends Base {
    public var bg:Sprite;
    public function BGCass() {
        bg.width = 200
    }
}
一切正常.但是,如果我希望将公共bg移动到这样的Base类中,我就会得到错误.
public class BGCass extends Base {
    public function BGCass() {
        bg.width = 200
    }
}
public class Base extends Sprite {
    public var bg:Sprite;
    public function Base() {
    }
}
我尝试在Base中使用getter setter并在BGClass中覆盖它们,但我仍然得到错误.这是Flash中的错误吗?是否有一个干净的解决方案或我是否需要创建某种代理变量以最终获得bg到Base?我知道在Flash中关闭"自动声明阶段实例"将消除错误,但我需要为设计师保留它.有解决方案吗
你有几个选择.
将"bg"变量或"bg"阶段实例重命名为其他内容,使它们不匹配.
如果您转到文件>发布设置...> Flash选项卡并单击Actionscript 3.0旁边的"设置..."按钮,您将看到默认情况下选中的选项标记为"自动声明阶段实例".如果禁用此选项,您看到的错误将消失,但您可能会看到其他错误因此弹出.
如果你使用选项2,我相信如果你保持名字相同,变量将自动填充对舞台实例的引用.
一些背景知识:当您使用基类创建库项目时,Flash会在幕后创建一个新类,从而扩展您选择的类.默认情况下,Flash配置为为该类提供一组成员变量,这些成员变量与您在创作环境中放置在MovieClip中的子项相匹配.