0

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

l.load(new URLRequest(" sample.swf "));

我有哪些选项可以最大程度地减少加载时间?我可以拆分 swf 并从多个服务器加载吗?

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

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

现在我正在声明/引用每一个图像,以便将其包含在编译的剪辑中。有人知道更好的方法吗?还没有开始使用 Flex。

感谢您的任何建议!

4

1 回答 1

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
}
于 2010-04-23T20:52:33.727 回答