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