我可以在ActionScript-3中更改类的函数引用吗?

Ric*_*rdo 1 reference function actionscript-3

好的,我有一个这样的课:

public class Foo extends Sprite {
    public function Foo(x:Number, y:Number):void {
        this.x = x;
        this.y = y;
    }

    public function bar():void {
        trace("I'm a happy class.");
    }
}
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

var foo:Foo = new Foo();
foo.bar = function():void {
              trace("I'm a happier class.");
          }
Run Code Online (Sandbox Code Playgroud)

我从编译器收到此错误:"错误:非法分配到功能栏".如何动态更改公共功能栏?

Tyl*_*eto 6

您无法在ActionScript中执行此操作.虽然有一个工作,尝试这样的事情:

public dynamic class Foo{
 public function Foo() {
  this.bar = function():void { trace("bar"); }
 }
}

var f:Foo = new Foo();
f.bar();
f.bar = function():void { trace("baz"); }
f.bar();
Run Code Online (Sandbox Code Playgroud)

编辑:或者这个

public class Foo{
    public var bar:Function;

    public function Foo() {
     this.bar = function():void { trace("bar"); }
    }
}

var f:Foo = new Foo();
f.bar();
f.bar = function():void { trace("baz"); }
f.bar();
Run Code Online (Sandbox Code Playgroud)

祝好运!