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

 
最近的项目需要在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表示层。
对于打印,需要在html上下功夫。我采用javascript方法弹出一个窗口,代码如下:<script language="javascript">
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');
</script>
可以看见,我在调用时将参数以URL方式传递给窗口。 以下即为打印窗口内容。
我在打印窗口中加入需要打印的页面,最后打印,其代码为:
<script type="text/javascript">
var WURL="";
var MaxLoad="";
var MinLoad="";
var Stroke="";
var StrokeCount="";
var Effic="";
var DayLiquid="";
Request = { QueryString : function(item)
        { var svalue = location.search.match(new RegExp("[/?/&]" + item + "=([^/&]*)(/&?)","i")); 
        return svalue ? svalue[1] : svalue; }}
<!— 读取各参量部分 -->
        WURL=Request.QueryString("WURL");
        WURL=WURL.toString();
        MaxLoad=Request.QueryString("MaxLoad");
        MaxLoad=MaxLoad.toString();
        MinLoad=Request.QueryString("MinLoad");
        MinLoad=MinLoad.toString();
        Stroke=Request.QueryString("Stroke");
        Stroke=Stroke.toString();             
        StrokeCount=Request.QueryString("StrokeCount");
        StrokeCount=StrokeCount.toString();
        Effic=Request.QueryString("Effic");
        Effic=Effic.toString();            
        DayLiquid=Request.QueryString("DayLiquid");
        DayLiquid=DayLiquid.toString();                           
       
function getvar1(){ <!—得到传递参数 -->
   return "WURL="+WURL+"&MaxLoad="+MaxLoad+"&MinLoad="+MinLoad+"&Stroke="+Stroke+"&StrokeCount="+StrokeCount+"&Effic="+Effic+"&DayLiquid="+DayLiquid;
}     
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'";
    flashObj=flashObj+" width='536' height='309' id='main' align='center'><param name='allowScriptAccess' value='always' />";
    flashObj=flashObj+"<param name='movie' value='energyPrint.swf' />";
       flashObj=flashObj+"<param name='FlashVars' value="+getvar1()+" /><param name='quality' value='high' />";
       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> ";
if(WURL==null||WURL==""||MaxLoad==null||MaxLoad==""||MinLoad==null||MinLoad==""||Stroke==null||Stroke==""||StrokeCount==null||StrokeCount==""||Effic==null||Effic==""||DayLiquid==null||DayLiquid=="")
    document.write("不正确的参数!")
else
    document.write(flashObj);
      
function doprint(){
       window.print();
}
</script>
 
<p>
 <input type="button" name="aaa" value="打印" onClick=doprint()>
</p>
以上红字部分为从当前页URL部分读取传递的各参量,蓝字部分为组织flash调用代码,此代码需要通过javascript的document.write方法输出。如此,只需要将生成的swf文件和打印专用的html文件放入Web根文件夹下,通过IE访问即可。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值