您的位置:首页 > 其它

采用flash调用外部文件的一点记录

2007-03-09 17:36 435 查看
最近的项目需要在Web上用flash动态加载一幅图片,并能通过html传递参数,并打印。为了便于日后查询,现记录如下:
对flash代码我不是很熟悉,但可以通过load方法加载外部的jpg文件,例如:放入一个Loader并命名为fWURL。其调用代码为fWURL.load(WURL); 其中的WURL为一个外部定义的变量,通过此变量可以从外部(html)动态读入一个值。调动代码如下:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="536" height="309" id="main" align="right">
<param name="allowScriptAccess" value="always" />
<param name="movie" value="energy.swf" />
<param name="FlashVars" value="WURL=http://192.168.100.99:8080/I.gif&MaxLoad=12.5&MinLoad=8.5&Stroke=3.12&StrokeCount=4&Effic=31&DayLiquid=52.6" />
<param name="quality" value="high" />
<embed src="energy.swf" quality="high" flashvars="WURL=http://192.168.100.99:8080/I.gif&MaxLoad=12.5&MinLoad=8.5&Stroke=3.12&StrokeCount=4&Effic=31&DayLiquid=52.6" width="536" height="309" name="main" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"/>
</object>
其蓝字部分为所调用的flash文件名,红字部分为传递的参数,可以看见,共传递了7个参数,中间用&符隔开,一旦在此定义,在flash中即可直接使用。但param和embed标签中的内容必须相同,这是基于IE与Firefox的相容性考虑的。
后又将加载jpg改为加载gif,由于flash中load方法无法加载gif,只有改用loadMovie方法,但经测试后发现loadMovie方法无法动态加载gif(也可能是我使用不当造成的),就只有改用loadMovieNum方法,成功。其代码为:loadMovieNum(WURL,1) ;1表示层。
[align=left]对于打印,需要在html上下功夫。我采用javascript方法弹出一个窗口,代码如下:<script language="javascript">[/align]
[align=left]window.open('http://192.168.100.99:8080/PowerPrint.htm?MaxLoad=456&MinLoad=12&Stroke=3&StrokeCount=9&Effic=3&DayLiquid=2.4&WURL=http://192.168.100.99:8080/PI.gif', '窗口名', 'height=380, width=550, top=0, left=0, toolbar=no, menubar=no, scrollbars=yas, resizable=no,location=no, status=no');[/align]
[align=left]</script>[/align]
[align=left]可以看见,我在调用时将参数以URL方式传递给窗口。 以下即为打印窗口内容。[/align]
[align=left]我在打印窗口中加入需要打印的页面,最后打印,其代码为:[/align]
[align=left]<script type="text/javascript">[/align]
[align=left]var WURL="";[/align]
[align=left]var MaxLoad="";[/align]
[align=left]var MinLoad="";[/align]
[align=left]var Stroke="";[/align]
[align=left]var StrokeCount="";[/align]
[align=left]var Effic="";[/align]
[align=left]var DayLiquid="";[/align]
[align=left]Request = { QueryString : function(item)[/align]
[align=left] { var svalue = location.search.match(new RegExp("[/?/&]" + item + "=([^/&]*)(/&?)","i")); [/align]
[align=left] return svalue ? svalue[1] : svalue; }}[/align]
[align=left]<!— 读取各参量部分 -->[/align]
[align=left] WURL=Request.QueryString("WURL");[/align]
[align=left] WURL=WURL.toString();[/align]
[align=left] MaxLoad=Request.QueryString("MaxLoad");[/align]
[align=left] MaxLoad=MaxLoad.toString();[/align]
[align=left] MinLoad=Request.QueryString("MinLoad");[/align]
[align=left] MinLoad=MinLoad.toString();[/align]
[align=left] Stroke=Request.QueryString("Stroke");[/align]
[align=left] Stroke=Stroke.toString(); [/align]
[align=left] StrokeCount=Request.QueryString("StrokeCount");[/align]
[align=left] StrokeCount=StrokeCount.toString();[/align]
[align=left] Effic=Request.QueryString("Effic");[/align]
[align=left] Effic=Effic.toString(); [/align]
[align=left] DayLiquid=Request.QueryString("DayLiquid");[/align]
[align=left] DayLiquid=DayLiquid.toString(); [/align]
[align=left] [/align]
[align=left]function getvar1(){ <!—得到传递参数 -->[/align]
[align=left] return "WURL="+WURL+"&MaxLoad="+MaxLoad+"&MinLoad="+MinLoad+"&Stroke="+Stroke+"&StrokeCount="+StrokeCount+"&Effic="+Effic+"&DayLiquid="+DayLiquid;[/align]
[align=left]} [/align]
[align=left]var flashObj="<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0'";[/align]
flashObj=flashObj+" width='536' height='309' id='main' align='center'><param name='allowScriptAccess' value='always' />";
[align=left] flashObj=flashObj+"<param name='movie' value='energyPrint.swf' />";[/align]
[align=left] flashObj=flashObj+"<param name='FlashVars' value="+getvar1()+" /><param name='quality' value='high' />";[/align]
[align=left] flashObj=flashObj+"<embed src='energyPrint.swf' quality='high' flashvars="+getvar1()+" width='536' height='309' name='main' align='middle' allowScriptAccess='sameDomain' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer'/></object> ";[/align]
[align=left]if(WURL==null||WURL==""||MaxLoad==null||MaxLoad==""||MinLoad==null||MinLoad==""||Stroke==null||Stroke==""||StrokeCount==null||StrokeCount==""||Effic==null||Effic==""||DayLiquid==null||DayLiquid=="")[/align]
[align=left] document.write("不正确的参数!")[/align]
[align=left]else[/align]
[align=left] document.write(flashObj);[/align]
[align=left] [/align]
[align=left]function doprint(){[/align]
[align=left] window.print();[/align]
[align=left]}[/align]
[align=left]</script>[/align]
[align=left] [/align]
[align=left]<p>[/align]
[align=left] <input type="button" name="aaa" value="打印" onClick=doprint()>[/align]
[align=left]</p>[/align]
[align=left]以上红字部分为从当前页URL部分读取传递的各参量,蓝字部分为组织flash调用代码,此代码需要通过javascript的document.write方法输出。如此,只需要将生成的swf文件和打印专用的html文件放入Web根文件夹下,通过IE访问即可。[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: