我有这个基类
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()
为什么不起作用?我知道这个类是读取和编译的,因为我在那里报告了一个错误。
答案 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)
呃,没关系,我不小心在一个不同的动画片段上指定了基类,而不是包含脚本的动画片段