概要
我正在尝试制作一个包含多个相同SWF的网页。我有一个问题,它的加载速度太慢了(虽然下载时间还不错)。我在每个单元格中都有一个4x4表格,在iframe中嵌入了一个swf文件。 (注意:4 X 4表=> 16 SWFS)。
我的AS3代码非常简单:
package
{
import flash.display.Sprite;
import flash.system.System;
import flash.text.TextField;
public class ActionscriptProject extends Sprite
{
public function ActionscriptProject()
{
var txt:TextField = new TextField();
txt.x=0;
txt.y=0;
txt.width=5000;
txt.height=5000;
addChild(txt);
txt.htmlText+="<font size='45'>"+System.totalMemory/1048576 + " MB"+"</font>";
}
}
}
我正在使用以下html将其加载到iframe中:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Flash Testing</title>
</head>
<body>
<table border="1">
<tr>
<td>
<iframe allowtransparency='true' scrolling='no' src='Flash/ActionscriptProject.html'></iframe>
</td>
<td>
<iframe allowtransparency='true' scrolling='no' src='Flash/ActionscriptProject.html'></iframe>
</td>
<td>
<iframe allowtransparency='true' scrolling='no' src='Flash/ActionscriptProject.html'></iframe>
</td>
<td>
<iframe allowtransparency='true' scrolling='no' src='Flash/ActionscriptProject.html'></iframe>
</td>
</tr>
<tr>
...
</tr>
<tr>
...
</tr>
<tr>
...
</tr>
</table>
</body>
</html>
注意:ActionscriptProject.html只是Flash Builder与应用程序创建的标准html。但应The_asMan的要求,我将其包括在此处:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0014)about:internet -->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<!--
Smart developers always View Source.
This application was built using Adobe Flex, an open source framework
for building rich Internet applications that get delivered via the
Flash Player or to desktops via Adobe AIR.
Learn more about Flex at http://flex.org
// -->
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- Include CSS to eliminate any default margins/padding and set the height of the html element and
the body element to 100%, because Firefox, or any Gecko based browser, interprets percentage as
the percentage of the height of its parent container, which has to be set explicitly. Initially,
don't display flashContent div so it won't show if JavaScript disabled.
-->
<style type="text/css" media="screen">
html, body { height:100%; }
body { margin:0; padding:0; overflow:auto; text-align:center;
background-color: #ffffff; }
#flashContent { display:none; }
</style>
<!-- Enable Browser History by replacing useBrowserHistory tokens with two hyphens -->
<!-- BEGIN Browser History required section -->
<link rel="stylesheet" type="text/css" href="history/history.css" />
<script type="text/javascript" src="history/history.js"></script>
<!-- END Browser History required section -->
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
<!-- For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. -->
var swfVersionStr = "10.0.0";
<!-- To use express install, set to playerProductInstall.swf, otherwise the empty string. -->
var xiSwfUrlStr = "playerProductInstall.swf";
var flashvars = {};
var params = {};
params.quality = "high";
params.bgcolor = "#ffffff";
params.allowscriptaccess = "sameDomain";
params.allowfullscreen = "true";
var attributes = {};
attributes.id = "ActionscriptProject";
attributes.name = "ActionscriptProject";
attributes.align = "middle";
swfobject.embedSWF(
"ActionscriptProject.swf", "flashContent",
"100%", "100%",
swfVersionStr, xiSwfUrlStr,
flashvars, params, attributes);
<!-- JavaScript enabled so display the flashContent div in case it is not replaced with a swf object. -->
swfobject.createCSS("#flashContent", "display:block;text-align:left;");
</script>
</head>
<body>
<!-- SWFObject's dynamic embed method replaces this alternative HTML content with Flash content when enough
JavaScript and Flash plug-in support is available. The div is initially hidden so that it doesn't show
when JavaScript is disabled.
-->
<div id="flashContent">
<p>
To view this page ensure that Adobe Flash Player version
10.0.0 or greater is installed.
</p>
<script type="text/javascript">
var pageHost = ((document.location.protocol == "https:") ? "https://" : "http://");
document.write("<a href='http://www.adobe.com/go/getflashplayer'><img src='"
+ pageHost + "www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a>" );
</script>
</div>
<noscript>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%" id="ActionscriptProject">
<param name="movie" value="ActionscriptProject.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="true" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="ActionscriptProject.swf" width="100%" height="100%">
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="true" />
<!--<![endif]-->
<!--[if gte IE 6]>-->
<p>
Either scripts and active content are not permitted to run or Adobe Flash Player version
10.0.0 or greater is not installed.
</p>
<!--<![endif]-->
<a href="http://www.adobe.com/go/getflashplayer">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash Player" />
</a>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</noscript>
</body>
</html>
浏览器
在Chrome中没有问题。所有应用程序的加载速度都非常快(我估计会在3秒钟之内)。
在IE 8中,问题很小。
在IE 7和Firefox 3.6.17中,该页面的加载时间很长。我尚未在其他浏览器中进行过测试。
在Firefox中,页面加载大约需要34秒。
调试信息(Firefox)
总共
System.totalMemory
报告说,瑞士法郎给我们带来了约42 MB的合并内存。这是Firebug中“网络”选项卡的屏幕截图:
Full Size Image
问题
最佳答案
您是否尝试过构建本身会加载其他瑞士法郎的容器瑞士法郎?这样做可能会更快,因为这样Firefox不必处理一遍又一遍地初始化swf的开销。创建空白电影来加载一堆其他电影并将它们放置在网格中是相当简单的。
关于flash - Flash:同一页面上有许多相同的SWF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6270900/