好的,我有一个这样的课程:
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.");
}
我从编译器收到此错误:“错误:非法分配到功能栏”。如何动态更改公共功能栏?
答案 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