网站改版,以前给客户做的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

FileInputStream stream = new FileInputStream(PublishUtil.getRootPath()+flashfile);
            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 

posted @ 2008-12-26 09:44  雨中漫步的太阳  阅读(2990)  评论(0编辑  收藏  举报