AS3项目中的共享代码

时间:2015-03-17 17:14:26

标签: actionscript-3 runtime shared flashdevelop

我一直在努力找到合适的解决方案,但我在AS3中是一个相对新手,但仍然不太确定我在那里。

我正在尝试在AS3中创建一个大型项目(使用FlashDevelop),它包含一个根级swf(称为Main),它在运行时加载到各种其他swfs中(例如名为ab.swf的东西)。所有这些swfs将在其用户界面中共享大量代码(例如按钮,滑块等)。我试图以这样的方式设置它们,即这些电影可以在彼此之间共享AS3类,以保持文件大小和加载时间尽可能低,同时仍然利用代码完成和其他编译时间的好处将课程编成一起。

我已经学会了如何使用ApplicationDomain从外部加载的swf文件中实例化类,所以我可以把这些类放到一个名为ui.swf的单独文件中,但是我引用它们的其他代码不知道它们的接口是什么是的,所以无法判断它是否写得正确。

有什么办法可以弥补这个差距吗?例如,有没有一种方法可以将类保留在同一个包中但不包含在发布中,而是用动态加载的版本替换它们?或者也许是一种告诉电影动态加载类的接口是什么的方法?

提前感谢任何见解。

----关注-----

好的,所以我一直在进一步研究这个问题,我想我有一些接近正确答案的东西。这就是我的想法。我的共享类将全部附加到接口。 ui.swf影片将包含实际的类,而ab.swf,main.swf等将只导入接口。然后我可以使用这样的代码:

var tDomain:ApplicationDomain = uiswf.applicationDomain
var Button:Class = tDomain.getDefinition("Button") as Class
var tButton:IButton = new Button() as IButton

这似乎是一个很好的模型。但是 - 据我所知,当我想使用继承时,它就会失效。假设Button类本身扩展了Sprite。我希望能够设置tButton.x,但编译器不知道x是tButton的属性,因为它不是IButton接口的属性。如何让编译器知道IButton还应该包含Sprite类的所有成员?有没有办法让IButton本身继承Sprite作为接口?

1 个答案:

答案 0 :(得分:0)

查看运行时共享库​​。

看到这个类似的问题: What is RSL (Runtime shared library ) used for in flash?