2014-12-03 28 views
0

我想知道如何以及如何在AS2/3中动态扩展一个类。
喜欢的东西:是否可以在AS2/3中动态扩展?

public class Main extends getDefinitionByName("com.parent") as Class{...} 

我知道这个代码是错误的,但只是告诉你什么是我需要的。也许与原型?

+2

能否请您描述场景这会有用吗?你会失去你所有的静态类型。 – Marty 2014-12-03 22:15:38

+0

当一个项目被分割成大量的swf文件,并且你想在不增加项目大小的情况下使用共享库时 – user2054758 2014-12-03 22:38:41

+0

如果你只是想跨文件共享资源,你可能想看看[运行时共享库​​](http:///stackoverflow.com/questions/2070244/runtime-shared-libraries)。 – blvz 2014-12-03 23:12:00

回答

0

在AS2,很容易:

trace("creating mc0"); 
this.attachMovie("libraryItemLinkage", "mc0", 0); 

MovieClipPlus = function(){ 
    trace("hello world."); 
}; 
MovieClipPlus.prototype = new MovieClip(); 
Object.registerClass("libraryItemLinkage", MovieClipPlus); 

trace("creating mc1"); 
this.attachMovie("libraryItemLinkage", "mc1", 1); 

对于AS3,它不是那么简单。事实上,它非常复杂(而且速度很慢),所以更容易想出另一种方法来完成你所尝试的。

但是,如果你仍然有时间和精力,请看flash.utils.Proxy课程,这会给你一些新的想法。

此外,检查这些:

介绍给代理
http://ltslashgt.com/2008/01/24/proxy-class-as3/

动态代理的创建,以AS3公共字节码
http://www.as3commons.org/as3-commons-bytecode/proxy.html

+0

在我的情况下,“MovieClip”是一个外部类。当然,我可以用getDefinitionByName(“MovieClip”)加载它,但如果“MovieClip”有静态字段会发生什么? – user2054758 2014-12-06 18:05:09