我有两个SWF:main.swf和external.swf。 main.swf需要访问external.swf中的一些方法,因此它将external.swf加载到自身中并使用getDefinitionByName(“package.Class”)来访问该类及其方法之一:
var ExternalClass = getDefinitionByName("package.Class") as Class;
var ClassInstance = new ExternalClass();
var NeededFunction:Function = ClassInstance["NeededFunction"] as Function;
var response:String = NeededFunction(param);
现在,我需要扩展NeededFunction(这是一个公共方法)的功能......我知道可以覆盖公共方法,但是如何使用动态加载的类来解决这个问题?
我以为我可以做这样的事情,但它不起作用:
var ClassInstance["NeededFunction"] = function(param1:uint):String {
var newString = "Your number is: "+param1.toString(); //New functionality
return newString;
}
答案 0 :(得分:0)
处理这个问题的另一种方法是将类放在一个可由两个SWF访问的包中。只需将类的根文件夹添加到Actionscript路径即可。
您只需导入它,而不是使用getDefinitionByName获取类。至于覆盖,你可以创建一个覆盖其中一个类的类,或者你可以创建一个接口。
import com.yourlocation.ExternalClass; var external:ExternalClass = new ExternalClass();
答案 1 :(得分:0)
使用FlashDevelop这很容易修复。
右键单击项目列表中包含的swc。 选择选项,然后“包含库(完整库)”。
..您现在可以使用getDefinitionByName从swc文件中获取未引用的类。