swfobject动态创建Flex
2011-05-16 19:30
246 查看
最近在测试项目的时候,当页面上存在多个Flex,并且Flex的数据是由.net提供的xml数据,会发生数据冲突,或者说数据缓存问题..暂且认为是数据缓存了,当加载第二个Flex时候数据会和加载第一个Flex的数据重了..后来通过用js动态创建的方法解决了数据冲突问题.但随之而来的是各浏览器兼容问题。这里我用了swfobject来动态创建Flex来加载Flex,并且每次关闭Flex时候都要将Flex的Html代码移除掉。
swfobject
下载地址:http://code.google.com/p/swfobject/downloads/list
最新版本是2.2.
swfobject的好处就不用多说了下面摘自网络:
1.IE中没有讨厌的虚框问题了。
2.提供了完善的版本检测功能,如果版本不够则显示其他东西,比如图片或文字。
3.易于使用,只要在页面头加载一个.js文件,然后HTML写一个容器,里面放普通的文本或图片(用于无法显示Flash时显示),最后用脚本来替换这个元素里面的内容为Flash。
4.使得插入Flash媒体资源尽量简捷、安全。而且它是非常符合搜索引擎优化的原则的。
5.能够避免HTML、XHTML中出现object、embed等非标准标签,从而符合更加标准。
使用也非常简单:swfobject
下载地址:
最新版本是2.2.
swfobject的好处就不用多说了下面摘自网络:
2.提供了完善的版本检测功能,如果版本不够则显示其他东西,比如图片或文字。
3.易于使用,只要在页面头加载一个.js文件,然后HTML写一个容器,里面放普通的文本或图片(用于无法显示Flash时显示),最后用脚本来替换这个元素里面的内容为Flash。
4.使得插入Flash媒体资源尽量简捷、安全。而且它是非常符合搜索引擎优化的原则的。
5.能够避免HTML、XHTML中出现object、embed等非标准标签,从而符合更加标准。
引入swfobject.js
<scriptsrc="js/swfobject.js"type="text/javascript"></script>
在页面中:
//动态创建Flex
functioncreateFlashMove(obj,sName,src,width,height){
varfl=document.getElementById("FlexDiv");
if(fl==null){
varcreteFl=document.createElement("div");
creteFl.id="FlexDiv";
obj.appendChild(creteFl);
}
vardivobj="FlexDiv";
varswfVersionStr="10.0.0";
varxiSwfUrlStr="playerProductInstall.swf";
varflashvars={};
varparams={};
params.quality="high";
params.bgcolor="#ffffff";
params.allowscriptaccess="sameDomain";
params.allowfullscreen="true";
//以下两句是将Flex置于底层.
params.wmode="Opaque";
params.wmode="transparent";
varattributes={};
attributes.id=sName;
attributes.name=sName;
attributes.align="middle";
swfobject.embedSWF(
src,divobj,
width,height,
swfVersionStr,xiSwfUrlStr,
flashvars,params,attributes);
}
obj:是要加载这个Flex的DIVid.(注意:这个Div是要被Flex替换掉的)
sName:是Flex的ID
src:Flex文件地址
因为Flex要通过xml进行交互所以需要通过,net传给Flex数据
functionGetXmlFunction(data){
try{
document.getElementById("TestDrawLine").GetXmlFunction(data);
}
catch(ex){
setTimeout("GetXmlFunction('"+data+"');",30);
}
}
try里面的一句是调用Flex里面添加的外部调用接口.
ExternalInterface.addCallback("GetXMLFunction",goDataXML);
(这里可以通过swfobject里面给Flex传递参数这里有个
这里就OK了.也解决了多个Flex在同一个页面冲突的问题.
相关文章推荐
- Flex动态创建多个曲线图+柱形图
- FLEX中使用AS动态创建DataGrid
- Flex 动态创建多个曲线图/柱形图 ColumnSeries
- Flex动态创建多个曲线图+柱形图
- Flex动态创建多个曲线图+柱形图
- Flex 动态创建 多个曲线图/柱形图 ColumnSeries
- Flex 动态创建 多个曲线图/柱形图 ColumnSeries
- Flex 动态创建 多个曲线图/柱形图 ColumnSeries
- Flex如何得到动态创建的Image尺寸
- Flex 3 动态创建Chart
- Flex 动态创建 多个曲线图/柱形图 ColumnSeries
- FLEX如何动态创建DataGrid组件详解
- Flex 动态创建 多个曲线图/柱形图 ColumnSeries
- FLEX动态创建事件
- Flex反射:通过调用getDefintionByName函数动态创建按钮等控件的例子
- Flex 动态创建 多个曲线图/柱形图 ColumnSeries
- FLEX实践—Datagrid动态创建列TypeError: Error #1010
- Flex动态创建类对象
- Flex LineChart动态创建曲线
- Flex动态创建多个曲线图+柱形图