【问题标题】:AS3 error 1120 when inheriting document class继承文档类时出现 AS3 错误 1120
【发布时间】:2011-07-04 06:19:03
【问题描述】:

我正在使用 AS3 使用 Flash CS4。

我有一个 TextPage.fla 文件,其中包含一个动态文本字段(名称:PageTitle)作为舞台上的一个实例。 在文档类(TextPage)中,我根据一些 XML 设置了 PageTitle 的文本。 这一切都很好。

我有另一个 fla 文件,SpecialTextPage.fla,它在舞台上也有 PageTitle 动态文本字段。

我现在尝试让 SpecialTextPage 文档类继承自 Textpage:

public class SpecialTextPage extends TextPage
{
...
}

但我收到“1120:访问未定义的属性 PageTitle”。尝试发布 SpecialTextPage 时出错。 错误位置以 TextPage.as 形式给出

作为一种解决方法,我可以复制整个 TextPage.as 文件并在 SpecialTextPage.as 中添加我需要的额外内容,但如果我可以扩展它,我显然更喜欢它。

我感觉我不是很了解flash在舞台上的对象和文档类之间的关系。

有人可以帮忙吗?

【问题讨论】:

    标签: actionscript-3 inheritance flash-cs4


    【解决方案1】:

    一个文档类基本上是在 SWF 时间轴的第一帧上获取和转储,然后在运行时执行,因此可以访问舞台上的所有内容,就像它们是类中的手写属性一样。

    现在假设您在 SpecialTextPage 中创建了一个变量,称为 var i:int;无论您做什么,父类都将永远无法访问 i (也不应该)。同样,通过链接到您的文档类的舞台元素,父级将永远无法访问它们。

    类似于MovieClip 扩展Sprite,Sprite 永远不能引用MovieClips 时间线,因为它不知道它。

    但并非全部丢失!实现目标的一个好方法是具备以下条件:

    /* TextPage */
    /* Parent Class */
    /* ... */
    public function TextPage() {
        pageTitle.text = getTitle(); // This textfield would be the one in TextPage.fla
    }
    
    protected function getTitle():String {
        return "All the text you could ever need in your title";
    }
    /* ... */
    
    
    /* SpecialTextPage */
    /* Child */
    /* ... */
    public function SpecialTextPage() {
       pageTitle.text = getTitle(); // This textfield would be in SpecialTextPage.fla
    }
    

    【讨论】:

    • 感谢您的回答。我曾假设基类会选择子类上的字段,只要它具有相同的名称。我没有看到您提出的解决方案将如何工作,因为它仍在引用字段名称,但我确实找到了适合我的解决方案 - 请参阅我对问题的回答。
    【解决方案2】:

    我解决这个问题的方法是禁用自动声明阶段实例。 (发布设置 --> Flash 选项卡 --> 取消选中“自动声明阶段实例”)

    然后我需要在我的 TextPage 类上将 pageTitle 声明为 public 字段:

    public class TextPage extends MovieClip
    {
        public var pageTitle:TextField;
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 2016-05-15
      • 2021-06-05
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多