Actionscript 3.0->如何从UIComponent覆盖受保护的方法

|| 我想在ActionScript中创建自定义按钮。 这是我的代码:
import flash.events.MouseEvent;

import mx.controls.Alert;

import spark.components.Button;

public class BookViewButton extends Button
{
    public function BookViewButton()
    {
        super();
    }
    override protected function mouseOver(event:MouseEvent,increase:int,newImageSource:String):void{
        Alert.show(\"mouseOver for new class works\");
    }
}
但是Adobe Flash Builder会将方法替代行作为错误信号发出。 我试图更改新的方法签名,使其与之完全匹配,如下所示:(我认为错误可能是因为我向
mouseOver
函数添加了额外的参数,所以Flex可能不会将其识别为重写)
        override protected function mouseOver(event:MouseEvent):void{
        Alert.show(\"mouseOver for new class works\");
    }
但是仍然不起作用。出现相同的小红色感叹号表示错误。 非常感谢您的帮助。谢谢。     
已邀请:
        如果您在Spark
Button
层次结构中具有
mouseOver()
方法,则使用什么SDK版本? 火花按钮具有
mouseEventHandler()
方法来覆盖:
override protected function mouseEventHandler(event:Event):void
{
    super.mouseEventHandler(event);
    var mouseEvent:MouseEvent = event as MouseEvent;
    if (event.type == MouseEvent.ROLL_OVER)
    {
        // My roll over logic here
    }
}
而且最好张贴IDE给您的错误文本。要复制它,只需在Flash Builder中打开
Problems
视图,找到您的错误消息并通过上下文菜单将其复制。     
        您不能在此处使用
override
,因为基类
Button
没有方法
mouseOver
可以覆盖。 如果删除了override关键字,它应该可以正常工作。就是说,您实际上需要为函数添加一个侦听器,以便将鼠标悬停在该侦听器上。像这样:
import flash.events.MouseEvent;
import mx.controls.Alert;
import spark.components.Button;

public class BookViewButton extends Button
{
    public function BookViewButton()
    {
        addEventListener(MouseEvent.MOUSE_OVER, _mouseOver);
    }

    private function _mouseOver(event:MouseEvent):void
    {
        Alert.show(\"mouseOver for new class works\");
    }
}
super();
的信息 除非有要解析的参数,否则无需在扩展类的构造函数中调用super。例。
package
{
    public class A extends Object
    {
        public function A()
        {
            trace(\"A\");
        }
    }
}
和扩展类:
package
{
    public class B extends A
    {
        public function B()
        {
            trace(\"B\");
        }
    }
}
如果这样做:
var thing:B = new B();
您将获得输出:
A
B
但是,如果您想要构造函数的参数,则需要将其解析为使用them17ѭ扩展的类的构造函数。像这样:
public class A extends Object
{
    public function A(arg:String)
    {
        trace(arg);
    }
}

public class B extends A
{
    public function B(arg:String)
    {
        super(arg);
    }
}
现在,这将输出\“ asdf \”:
var thing:B = new B(\"asdf\");
    

要回复问题请先登录注册