或许我还是对flash了解不够深,虽然用它好多年了....还没有发现有更好的办法,例如flashDll,我就不知道怎么用才更好,可以达到他说的那样的可以使文件小很多。
他的做法是把很多在多个flash中使用的代码打包进一个swf里面去,然后给不同的swf调用,从而达到减小体积的目的。
但是我觉得即使是加载进行,但是在代码里进行了声明,最后还是会把代码编译进来,结果是体积还是没有减小.....(或许我这样说还是会有很多人不明白的.....具体看代码和效果吧)
![程序代码](images/code.gif)
package
{
import flash.display.Sprite;
import flash.display.Loader; import flash.events.Event;
import flash.system.LoaderContext;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.utils.getDefinitionByName;
[SWF (width=800, height=600)]
public class Main extends Sprite
{
private var loader:Loader;
public function Main()
{
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoader);
loader.load(new URLRequest("dll/AsWingDLL_1_3_0.swf"),
new LoaderContext(false, ApplicationDomain.currentDomain));
}
private function onLoader(event:Event):void
{
var mangerClass:Class = getDefinitionByName("org.aswing.AsWingManager") as Class;
mangerClass["initAsStandard"](this);
var frameClass:Class = getDefinitionByName("org.aswing.JFrame") as Class;
var frame:Object = new frameClass(this,"测试反射");
var paneClass:Class = getDefinitionByName("org.aswing.JScrollPane") as Class;
var pane:Object = new paneClass();
var aertClass:Class = getDefinitionByName("org.aswing.JTextArea") as Class;
var art:Object = new aertClass();
//增加多行文本
pane["append"](art);
frame["setContentPane"](pane);
frame["setSizeWH"](400, 300);
frame["show"]();
}
}
}
效果图
很明显,可以看到体积非常小,
当然,有个AsWingDLL_1_3_0.swf文件是200k的,当然,你也可以加载网络上的代码库
如果不利用反射,直接在flash里进行声明,那么代码会变得大很多,有心人可以重写onLoader方法里的代码。不利用反射,直接new对象
老规矩,还是给上源代码点击下载此文件