这是我的代码:
package {
import flash.display.SimpleButton;
public class button extends SimpleButton {
public function button() {
}
public function addListeners():void {
button.addEventListener(MouseEvent.CLICK, downState);
}
public function downState(event:MouseEvent):void {
trace('Test');
}
}
}
我制作的按钮已经有正确的类型(Up,Down,Hit,Over) 错误说的是:1023不兼容的覆盖线16列19 1024:覆盖未标记为覆盖第16行第19列的函数
如果你愿意,谢谢你的帮助!
答案 0 :(得分:1)
由于您的button
类正在扩展SimpleButton
,因此button
中提供了SimpleButton中的所有公共和受保护函数和属性。
SimpleButton类有一个名为downState
的属性,因此当您尝试在downState
类中声明一个名为button
的函数时,您会收到错误,因为它与现有实体发生冲突叫downState
。
要修复此错误,只需使用范围内尚不存在的名称(以下示例中为clickHandler
)
package {
import flash.display.DisplayObject;
import flash.display.SimpleButton;
import flash.events.MouseEvent; //add missing imports
public class button extends SimpleButton {
public function button(upState:DisplayObject=null, overState:DisplayObject=null, downState:DisplayObject=null, hitTestState:DisplayObject=null){
//super calls the base class constructor (SimpleButton)
super(upState, overState, downState, hitTestState);
//let's automatically add the click listener when the button is created
addListeners();
}
public function addListeners():void {
this.addEventListener(MouseEvent.CLICK, clickHandler);
}
public function clickHandler(event:MouseEvent):void {
trace('Test');
}
}
}
还要注意一些重要的其他变化:
MouseEvent
类的导入(否则会出现未知的类错误)。this
,因为button
引用了类(不是类的实例),并且会给出未知的属性或方法错误。