我如何子类化从swf加载的类

时间:2012-03-06 04:12:59

标签: actionscript-3 flash

我想继承“superClass”并覆盖其中一个函数。

public class superClass {
    protected function f1(...) : Boolean {...}
    protected function f2(...) : Boolean {...}
    ...
    protected function f100(...) : Boolean {...}
}
public class subClass extends superClass {
    // override f1 in the subclass
    protected override function f1(...) : Boolean {...}
}

问题是“superClass”是从swf加载的。我的项目中没有对类定义的引用。有没有办法做下面的事情?

public class subClass {
    private var superClassObject:  Object;

    // construct from an instance of superClass
    public function subClass (s : Object) {
        superClassObject = s;
    }

    private function myF1(...) : Boolean {...}

    override InvokeFunction (fname: string, args: Array) : Object {
        if (fname == "f1") {
            return myF1(args);
        } else {
            return superClassObject.InvokeFunction(fname, args);
        }
    }
}

我不确定AS中是如何实现函数调用的。 “InvokeFunction”应该是什么?

1 个答案:

答案 0 :(得分:0)

你应该使用.swc,而不是.swf。要扩展的类必须在编译时可用,而不是在运行时。无论如何,如果使用swf是强制性的,您可以使用不同的技术来“覆盖”功能。 除了继承之外,还有其他OOP概念(Composition, Aggregation等)和设计模式(Proxy,Adapter等...)来改变类的功能。你可以使用它们。