Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 从另一个类重写函数_Actionscript 3_Apache Flex - Fatal编程技术网

Actionscript 3 从另一个类重写函数

Actionscript 3 从另一个类重写函数,actionscript-3,apache-flex,Actionscript 3,Apache Flex,我正在我的一个类中定义此函数: public function onUse():void {}; 然后在我的另一个类中(我们称之为“class2”),我创建了这个类的一个对象,然后想用另一个来重写这个函数。经过一些谷歌Fu,我找到了这个,并使用它 button.onUse { variable = value; } …但它会立即执行,而不是在调用onUse()时执行-这似乎总是一个空函数 除此之外,我没有找到更多的东西——我自己尝试了一些事情,比如在class2中指定一个函数,并使用

我正在我的一个类中定义此函数:

public function onUse():void {};
然后在我的另一个类中(我们称之为“class2”),我创建了这个类的一个对象,然后想用另一个来重写这个函数。经过一些谷歌Fu,我找到了这个,并使用它

button.onUse {
    variable = value;
}
…但它会立即执行,而不是在调用onUse()时执行-这似乎总是一个空函数

除此之外,我没有找到更多的东西——我自己尝试了一些事情,比如在class2中指定一个函数,并使用
button.onUse=function(),但它总是抛出错误


有人能告诉我,我正在尝试做的事情是否确实可行,如果可行,我该如何做?

您只能在扩展类时重写函数:

public class A {
    public function foo():void {
        doStuff();
    }
}

public class B extends A {
    override public function foo():void {
        doOtherStuff();
    }
}

var n:A = new A(); 
n.foo(); // => calls doStuff();

var o:B = new B();
o.foo(); // => calls doOtherStuff();
因此,在运行时不可能为实例的类方法分配不同的函数

但是,您可以让原始类包含
Function
类型的字段,然后简单地为其分配不同的闭包

public class A {
    public var foo:Function;
}

var n:A = new A();
n.foo = function ():void { 
    doStuff();
};
n.foo(); // => calls doStuff();

var o:A = new A();
o.foo = function ():void {
    doOtherStuff();
}
o.foo(); // => calls doOtherStuff();
检查的语法

button.onUse {
    variable = value;
}
函数将被定义为

公共函数onUse():void{}

并用

override public function onUse():void {
}
在另一个班级

您尝试这样做的方式并不构成重写函数

在类似的情况下,我所做的是在类中创建一个onClick函数

public var onClickFunction:Function = null; 
然后在CLICK event listener函数中添加

if(onClickFunction != null){
    onClickFunction();
}
然后,您可以通过执行以下操作来分配单击功能

button.onClickFunction=function():void{ 变量=值; //多斯塔夫 }


这不是最好的方法,但可能是实现功能最简单的方法。理想情况下,您应该按照spacepirate建议的方式使用继承。

这是一个非常基本的面向对象编程概念。没关系,我们都得从某个地方开始。不过,我建议你在这个问题上记录下来,这样你就可以从坚实的基础开始。然而,我没有任何好的参考开始,但我相当肯定一个好撒玛利亚人在这里确实有一些非常好的分享。