Apache flex 重写mxml组件脚本块中定义的函数实例的函数
我在mxml中定义的组件的脚本块中定义了一个受保护的函数,如下所示:Apache flex 重写mxml组件脚本块中定义的函数实例的函数,apache-flex,actionscript,Apache Flex,Actionscript,我在mxml中定义的组件的脚本块中定义了一个受保护的函数,如下所示: <s:VGroup xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="onCreationComplete()"> <fx:Script>
<s:VGroup xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="onCreationComplete()">
<fx:Script>
<![CDATA[
protected function onCreationComplete():void {
}
...
是否可以在组件实例中重写函数,如下所示:
<gen:CreateObjectFormSubmit id="formSubmit">
<fx:Script>
<![CDATA[
override protected function onCreationComplete():void {
form=form1;
}
]]>
</fx:Script>
当然可以。MXML组件是一个类,所以如果您基于组件a创建组件B(B从a继承),那么您可以在B中重写a的方法。当然可以。MXML组件是一个类,所以如果您基于组件a创建组件B(B从a继承),那么您可以在B中重写a的方法。要重写任何函数,您要重写的函数应该在您当前类的父类中可用
public class A {
public function methodtooverride():void{
trace('in class A');
}
}
public class B extends A {
override public function methodtooverride():void{
trace('in class B');
}
}
要覆盖任何函数,您要覆盖的函数应该在您当前类的父类中可用
public class A {
public function methodtooverride():void{
trace('in class A');
}
}
public class B extends A {
override public function methodtooverride():void{
trace('in class B');
}
}
只是要注意在哪里以及如何声明超级类。根据上面提供的语法,您可能试图在mxml类中声明一个标记,如果是这种情况,编译器会将其视为单独的子对象,而不是实际的扩展
首先,根级别的标记不能声明id(但组件可以声明id,这将成为类名),您很可能需要显式声明所有xml名称空间
为了使其成为真正的扩展,您的第一个类需要命名为CreateObjectFormSubmit,这将成为扩展类的根标记。不过,有一个问题是,如果从mxml类进行扩展,则不能声明任何其他子类(由于布局规则,使用mxml表示法)
如果像您所说的那样是类的一个实例,那么不,您将无法重写它,因为标记的函数范围仍然位于根级别。在声明标记时,有时也称为“outerDocument”
上述情况与常规操作没有任何区别,如下所示:
class SomethingCool extends UIComponent {
...
public function addButtons():void
{
var btn:Button = new Button();
btn.id = 'formSubmit';
//can't declare an override of Button here
}
}
只是要注意在哪里以及如何声明超级类。根据上面提供的语法,您可能试图在mxml类中声明一个标记,如果是这种情况,编译器会将其视为单独的子对象,而不是实际的扩展
首先,根级别的标记不能声明id(但组件可以声明id,这将成为类名),您很可能需要显式声明所有xml名称空间
为了使其成为真正的扩展,您的第一个类需要命名为CreateObjectFormSubmit,这将成为扩展类的根标记。不过,有一个问题是,如果从mxml类进行扩展,则不能声明任何其他子类(由于布局规则,使用mxml表示法)
如果像您所说的那样是类的一个实例,那么不,您将无法重写它,因为标记的函数范围仍然位于根级别。在声明标记时,有时也称为“outerDocument”
上述情况与常规操作没有任何区别,如下所示:
class SomethingCool extends UIComponent {
...
public function addButtons():void
{
var btn:Button = new Button();
btn.id = 'formSubmit';
//can't declare an override of Button here
}
}
你的样品应该很好用!有什么问题吗?你的样品应该很好用!问题是什么?这就是我这个问题的意思,我不知道为什么我认为Flex中会有匿名类扩展。这就是我这个问题的意思,我不知道为什么我认为Flex中会有匿名类扩展。