之前写了一篇关于SWFObject的推荐,假如你只是做做展示动画,那么SWFObject对你而言的确意义不是很大,因为你不需要考虑程序接口,甚至你都不需要程序交互。假如你是一个WEB开发人员,那么我可以给你展示一下SWFObject将如何帮助我们构建灵活的程序接口。
为了让大家更清楚地理解,我提供了一个简单的例子(无法插入FLASH,特截图,点击查看FLASH实例):
上面依次插入同一个flash,而三者的颜色却不相同,如何实现这种效果了?方法很多:你可以用JS来设置FLASH中监视的颜色状态变量,你也可以使用FlashVars传递参数,甚至使用服务端再生成SWF文件…那我这里就要用SWFObject来展示一种更清楚、便捷的方法,先我们来看看上面效果页中的HTML代码:
<p style="float: left; margin: 10px; width: 100px; height: 100px; border: red 1px solid" id="dot_red">播放器版本需要8.0+</p><p style="float: left; margin: 10px; width: 100px; height: 100px; border: red 1px solid" id="dot_green">播放器版本需要8.0+</p>
<p style="float: left; margin: 10px; width: 100px; height: 100px; border: red 1px solid" id="dot_blue">播放器版本需要8.0+</p>
<script type="text/javascript">
//red
var so_red = new SWFObject("http://www.v-sky.com/blog/wp-content/uploads/2007/06/colorPanel.swf","c_red","100%","100%","8","#ff6600");
so_red.addVariable(”color”,”0xff0000″);
so_red.write(”dot_red”);
//green
var so_green = new SWFObject(http://www.v-sky.com/blog/wp-content/uploads/2007/06/colorPanel.swf”,”c_green”,”100%”,”100%”,”8″,”#ff6600″);
so_green.addVariable(”color”,”0×00ff00″);
so_green.write(”dot_green”);
//blue
var so_blue = new SWFObject(http://www.v-sky.com/blog/wp-content/uploads/2007/06/colorPanel.swf”,”c_blue”,”100%”,”100%”,”8″,”#ff6600″);
so_blue.addVariable(”color”,”0×0000ff”);
so_blue.write(”dot_blue”);
</script>
从上面的代码中可以看出来,仅仅是使用了SWFObject的addVariable方法给SWF添加了一个变量color,而SWF中显示的颜色就是我们所设置的颜色值,这比起我们刚才说说到的其他解决方案是否简单多了?其实这里的作用原理就是SWFObject的addVariable方法将FlashVars的功能封装起来了,同时考虑了浏览器兼容,让我们给SWF的ROOT添加了color=”0xff0000″的变量。那么当页面打开时FLASH接收到这个变量然后做相应显示即可,下面是FLASH端的代码:
var so = new SWFObject("/res/flash/top.swf", "pkswf", "100%", "100%", "8", "#000000");
//记载选手信息的XML地址
so.addVariable("loadVote", "/hifly/pk_xml_output.php?pkid=1");
//投票地址
so.addVariable("sendVote", "/hifly/pk_vote.php?pkid=1");
//PK结束时间
so.addVariable("endTime","2007-4-10-17-0-0");
//当前时间,服务端校验,防止本地时间不准确
so.addVariable("nowTime","2007-05-27-14-23-39");
//设置投票动态更新的时间间隔
so.addVariable("getVote","10000http://flash.local/getvote.php");
so.write("pkswf");
如何提供灵活的接口更多的是需要前期的设计,要求设计者懂得客户端和服务端技术,知道如何将二者高效、无缝地结合起来,这不仅仅是知道原理就行的东西,更多的是需要实践,总结,只有这样才能得到提高,探求出更好的方式,欢迎大家共同探讨。
注重:如需转载,请注明出处:http://www.v-sky.com/blog/index.php/archives/173