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

时间:2010-02-10 01:08:20

标签: actionscript-3 function reference

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

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.");
    }
}

我想做这样的事情:

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

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

2 个答案:

答案 0 :(得分: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();

编辑:或者

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();

古德勒克!

答案 1 :(得分:1)

我认为该类需要声明为dynamic