2010-04-22 54 views
0

我有一个相当大的(34 MB)的Flash CS4 AS3 SWF被装载作为一个整体成预加载像预加载来自多个源

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

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

我动态地从库加载图像:

VAR myBitmapDataObject:myBitmapData =新myBitmapData(100,100); var myImage:Bitmap = new Bitmap(myBitmapDataObject); addChild(myImage);

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

感谢您的任何建议!

+0

你加载了多少张图片?我没有看到任何会导致文件太大的文件。 – 2010-04-22 19:31:02

+0

你加载了吗?这是704张图片。 – procrustes 2010-04-22 19:54:59

+0

等待着整个3D的东西704张图像全部拼接在一起?我以为你会像Papervision那样做出这样的事情,并将一些图像作为纹理应用。这就是为什么我不认为会有这么多的图像。 – 2010-04-26 16:42:19

回答

0

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

-

关于(一),减少了加载时间,我建议......改变你接近的方式(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 
}