从多个源预加载.swf

时间:2010-04-22 18:24:41

标签: flash actionscript preloader

我将一个相当大的(34 MB)Flash CS4 AS3 swf作为一个整体加载到预加载器中,如

l.load(新的URLRequest(“sample.swf”));

我可以选择最小化加载时间?我可以拆分swf并从多个服务器加载吗?

我正在从库中动态加载图片:

var myBitmapDataObject:myBitmapData = new myBitmapData(100,100); var myImage:Bitmap = new Bitmap(myBitmapDataObject); 的addChild(MYIMAGE);

现在我正在声明/引用每个图像,以便将它包含在已编译的剪辑中。有谁知道更好的方法?还没有完全使用Flex。

感谢您的任何建议!

1 个答案:

答案 0 :(得分:0)

我假设这是两个单独的问题,关于(a)减少加载时间,以及(b)减少你需要做的变量声明的数量。

-

关于(a)减少加载时间,我建议......改变你接近的方式(b)。

-

关于(b),是否存在从库中动态加载图像的事情?他们都是嵌入式的!并膨胀你的SWF。我要做的是使用更懒的策略 - 将它们从SWF中拉出来,然后使用图像加载器从服务器直接加载每个策略。有关如何执行此操作的信息,请参阅http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/Loader.html#includeExamplesSummary

那应该削减SWF的大小,并可能消除问题(a),虽然我不知道你在那里敲了多少其他东西。

至于你有704个不同声明的问题,一个解决方案可能是重命名你的图像以具有一致的命名约定,即“image1.jpg”,“image2.jpg”,...,“imageN.jpg” 。您可以使用Mac上的Applescript或Windows上的Photoshop等程序快速完成。完成后,您可以执行以下操作:

for(var i:int = 1; i <= 704; ++i)
{
 var url:String = "image" + i + ".jpg"; 
 // load the image from this URL
 // addChild(this image)
 // maybe push it onto the end of an array as well, if you need that
}