您的位置:首页 > 运维架构 > 网站架构

网站改版,以前给客户做的flash大小不合适怎么办?那我告诉你让flash根据你指定的宽度自动调整高度

2008-12-26 09:44 651 查看
网站改版后,客户页面由窄变宽或者由宽变窄了,而客户页面上面的flash banner这个时候就不那么听话了,一般我们的做法是给flash指定一个宽度 让flash自适应高度,如下面这样的代码

Code

<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 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: