MovieClip无法看到基类方法

时间:2010-08-12 11:36:02

标签: flash actionscript-3 movieclip

我有这个基类

package sevengames.miranda.front.res {

    import flash.display.MovieClip;
    import flash.text.TextField;

    public class MenuButtonBase extends MovieClip {

        protected var text:TextField;
        protected var bt:String = null;

        public function MenuButtonBase() {
            stop();
            buttonMode = true;
            mouseChildren = false;
        }

        protected function updateText():void {
            if (text != null) {
                text.text = bt == null ? "???" : bt;
            }
        }

        public function set buttonText(t:String):void {
            bt = t;
            text.text = bt;
        }

    }

}

然后,我在Flash文档中创建一个影片剪辑,该类在属性中将此类设置为“基类”。但是,如果我在影片剪辑的框架脚本中执行this.updateText();,则会抱怨

TypeError: Error #1006: updateText is not a function.
at miranda_fla::MenuButton_3/frame1()

为什么不起作用?我知道这个类是读取和编译的,因为我在那里报告了一个错误。

4 个答案:

答案 0 :(得分:1)

我能够获得相同错误的唯一方法是将基类设置错误(flash.display.MovieClip)。您可以将类设置为xxx.xxx.MenuButtonBase,或者为movieclip指定自己的类名,并将基类设置为xxx.xxx.MenuButtonBase。

如果单击movieclip属性中的绿色复选标记以“验证基类定义”,它是否会找到该类?

否则你的代码工作正常,至少我在运行它时没有收到错误。

除了你的类名为MenuButtonBase之外,这并没有改变任何东西,如果MenuButton是它的构造函数,那么它应该与该类同名。

请注意我的错误是:

TypeError:错误#1006:updateText不是函数。     在MenuButtonBase / frame1()

与你的略有不同。我在库中有一个movieclip,ether扩展你的类或者是你的类(类设置为xxx.MenuButtonBase),在第1帧我放了updateText调用。然后我将一个movieclip的副本拖到舞台上。我也试过使用代码,但没有任何改变。

答案 1 :(得分:0)

这可能不是你的错误的原因,但MenuButton()看起来像你的构造函数,不应该是MenuButtonBase()?您是否尝试将updateText()设为公共函数?

答案 2 :(得分:0)

updateText被声明为受保护:将其公开:

public function updateText():void

答案 3 :(得分:0)

呃,没关系,我不小心在一个不同的动画片段上指定了基类,而不是包含脚本的动画片段