FusionCharts flash设置div的层次(swfobject对swf透明支持)。

南楼画角 提交于 2019-12-07 09:46:01

我不是做网页设计的,所以碰到这个问题时感觉好偏啊,不过,最后有幸解决了,高兴一下,也总结一下。

问题的情况是这样的,做了一个页面,页面中有一个日期选择的js,日期下面是FusionChartsFree 生成的flash图表,他们都是放在div标签里面的,在页面加载完成后,点击日期选择时,出现的日期图片被flash遮住了,没法选择。

我猜就是div有层次的问题,于是我就在网上查资料,有点收获,知道div层次是可以用z-index 来设置的。但是对这两个div ,我怎么设置就没效果,日期依然在flash下面。正当我准备放弃的时候,突然想到是不是flash有些特殊呢,然后我又在网上搜了一下,发现了这篇文章

引用

<param name="WMODE" value="transparent">

<param name="wmode" value="Opaque">

<param name="wmode" value="Window">

NOTE: 支持其它浏览器(firefox opera etc.) 则使用 <embed wmode="transparent" />在embed节点中加入wmode值.

window 模式

默认情况下的显示模式,在这种模式下flash player有自己的窗口句柄,这就意味着flash影片是存在于Windows中的一个显示实例,并且是在浏览器核心显示窗口之上的,所以flash只 是貌似显示在浏览器中,但这也是flash最快最有效率的渲染模式。由于他是独立于浏览器的HTML渲染表面,这就导致默认显示方式下flash总是会遮 住位置与他重合的所有DHTML层。

但是大多数苹果电脑浏览器会允许DHTML层显示在flash之上,但当flash影片播放时会出现比较诡异的现象,比如DHTML层像被flash刮掉一块一样显示异常。

Opaque 模式

这是一种无窗口模式,在这种情况下flash player没有自己的窗口句柄,这就需要浏览器需要告诉flash player在浏览器的渲染表面绘制的时间和位置。这时flash影片就不会在高于浏览器HTML渲染表面而是与其他元素一样在同一个页面上,因此你就可 以使用z-index值来控制DHTML元素是遮盖flash或者被遮盖。

Transparent 模式

透明模式,在这种模式下flash player会将stage的背景色alpha值将为0并且只会绘制stage上真实可见的对象,同样你也可以使用z-index来控制flash影片的 深度值,但是与Opaque模式不同的是这样做会降低flash影片的回放效果,而且在9.0.115之前的flash player版本设置wmode=”opaque”或”transparent”会导致全屏模式失效。

了解了各种模式的实现方式和意义在以后的开发中就可以按照具体情况选择设置wmode属性的值了。

看完这个我明白了,把flash的wmode设置成opaque就行了,剩下的事情就是改FusionCharts的参数了,这东西今天刚刚试着在用,把他的js文件拿出来看了一遍才知道怎么设置,在页面上加载flash的js代码中加上这句

chart.addParam("wmode","Opaque");就ok了~

 

今天使用swfobject,竟然发现没有参数指定swf透明。汗~~

不过可以看看它源代码,然后稍做修改:

1、在 swfobject.js 里面找到:

if(c){this.addParam(”bgcolor”,c);}

2:改为if(c){this.addParam(”bgcolor”,c);} else {this.addParam(”wmode”,”transparent”);}

3:传递背景颜色为空:

var so = new SWFObject(”test.swf”, “test”, “550″, “400″, “9″, null);

so.write(”flashcontent);

其实还可以这样:

var so = new SWFObject(”test.swf”, “test”, “550″, “400″, “9″, “#ffffff”);

so.addParam(”quality”, “low”);

so.addParam(”wmode”, “transparent”);

so.addParam(”salign”, “t”);

so.write(”flashcontent”);


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!