网站改版,以前给客户做的flash大小不合适怎么办?那我告诉你让flash根据你指定的宽度自动调整高度
网站改版后,客户页面由窄变宽或者由宽变窄了,而客户页面上面的flash banner这个时候就不那么听话了,一般我们的做法是给flash指定一个宽度 让flash自适应高度,如下面这样的代码
<embed width="100%" height="100%" src="/upfiles/uploadpic/companypic/20082xube8s.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="opaque"
或者我们把flash 的宽度指定为我们页面的宽度 Width="770px" 可是页面的显示效果却是这样的:
两边黑的多出的东西就是由于flash自动适应后的出现的问题(如果你的flash宽度正好是770的话是不会出现此类问题的!)
那好了,我们给flash指定一个宽度再给它指定一个高度,不让它自适应,可是你怎么知道他的高度呢?随便指定一个,上述问题还是会出现的!
(或者你告诉美工,你把上面的flash重做下,那么后果就是你被美工骂死,美工最后累死,~~~~~~开玩笑呵呵)
flash不像图片那样可以用js计算后等比例的进行放大或者缩小!
但是我们可以通过程序来搞定这一切!
首先是C#版的:
cnblogs上面的牛人已经帮我们介绍了.可以直接参考该文章
http://www.cnblogs.com/gmm/archive/2007/07/17/310675.html
或许你是用java开发,比如我,以前是c# 现在是java 百度了一通发现java下面也有比较牛X的开源项目来帮忙搞定这个麻烦事情
http://www.jswiff.com/download/index.jsp
InputBitStream bitStream = new InputBitStream(stream);
SWFHeader swfheader = new SWFHeader(bitStream);
Rect rect =swfheader.getFrameSize();
float real_width = ((rect.getXMax() - rect.getXMin())/20L);
float real_height = ((rect.getYMax()- rect.getYMin())/20L);
if(real_width>=(float)width)
{
float percent= ((float)width/real_width);
height = (int)(real_height*percent);
}
LOG.info("real width:"+real_width +"real height:" + height);
String execString = "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0' width='" + width + "' height='" + height + "'><param name='movie' value='"+ flashfile +"'><param name='quality' value='high'><PARAM NAME='wmode' value='opaque'><embed src='" + flashfile + "' quality='high' pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' wmode='opaque' width='" + width + "' height='" + height + "'></embed></object>";
LOG.info("swf code:"+execString);
return execString;
如果有什么问题,请发邮件 suyuan19@qq.com