论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS编程教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

为FLASH程序构造灵活的接口

文章类别:Flash AS编程 | 发表日期:2008-10-6 17:34:28


 之前写了一篇关于SWFObject的推荐,假如你只是做做展示动画,那么SWFObject对你而言的确意义不是很大,因为你不需要考虑程序接口,甚至你都不需要程序交互。如果你是一个WEB开发人员,那么我可以给你展示一下SWFObject将如何帮助我们构建灵活的程序接口。   
  为了让大家更清晰地理解,我提供了一个简单的例子:



 

上面依次插入同一个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");
a
</script>

  从上面的代码中可以看出来,仅仅是使用了SWFObject的addVariable方法给SWF添加了一个变量color,而SWF中显示的颜色就是我们所设置的颜色值,这比起我们刚才说说到的其他解决方案是否简单多了?其实这里的作用原理就是SWFObject的addVariable方法将FlashVars的功能封装起来了,同时考虑了浏览器兼容,让我们给SWF的ROOT添加了color=”0xff0000″的变量。那么当页面打开时FLASH接收到这个变量然后做相应显示即可,下面是FLASH端的代码:

//获取FlashVars变量
//如果变量不存在,那么显示默认值
if(color==undefined){
color=0xFFFF00;
}
//库中有一个色块bg
var bg_mc:MovieClip = _root.attachMovie("bg", "bg", 1);
//设置颜色即可
new Color(bg_mc).setRGB(color);


  JS跟FLASH通信时传递的变量是字符串形式,这点大家在使用时要十分注意,如果你需要的数据是Number类型,那么在FLASH接收以后需要做类型转换,否则会出现意想不到的BUG,而且极难发现。
  对于我所指的灵活接口大家应该明白是指什么了,而且对其原理也应该理解了,或许有些朋友觉得这样做太麻烦了,我直接做三个FLASH,要什么颜色做什么颜色不就可以了吗?试想一下,假如我们的程序比较复杂了?例如是一套皮肤,而不仅仅只是上面一个颜色设置,那么你需要多少重复性的劳动了?下面我就来谈一下我认为的这种做法的优越性在哪儿:

  一、灵活的接口更适合变动的需求,利于后期修改

  在工作中我们时常会遇到变动不定的需求,就拿上面的颜色设置为例,如果我们今天做了一个绿色的,马上需求改动为一个红色的,那么我们可以很轻松地通过SWFObject来更改变量,而不需要打开源文件更改,重新编译。有些朋友可能觉得重新编译一次不费事,但如果你遇到比较复杂的程序,FLASH编译器的效率还是比较头痛的,又或者源程序现在公司,而你现在却在家里。

  二、利于提高团队效率

  对于经过磨合的团队而言,页面制作人员只要拿到了FLASH接口文档,那他就能很轻松利用SWFObject来将FLASH插入到HTML中,服务端人员也可以很轻松从数据库中读出数据然后动态设置SWFObject的变量值。三者的协作显得各司其职,有条不紊。拿一个XML的图片展示为例,FLASH端可以将XML的源地址做为变量接口留出来,那么服务端人员不需要将XML文件保存到双方约定好的位置,即使程序发生了改动,服务端人员也能很灵活地做出修改,而不需要让FLASH制作人员再做修改。设计出完善的接口可以做到“一次编译终身受用”
  
  下面是一个基于此思想的稍微复杂的实现-湖南卫视快乐男声的PK台,现在PK已经结束了,如果有兴趣的朋友以把这个SWF下载到本地调试,之前已经提到过设计出完善的接口可以做到“一次编译终身受用”。下面是SWFObject设置的的部分接口:


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","10000$http://flash.local/getvote.php");
so.write("pkswf");


  如何提供灵活的接口更多的是需要前期的设计,要求设计者懂得客户端和服务端技术,知道如何将二者高效、无缝地结合起来,这不仅仅是知道原理就行的东西,更多的是需要实践,总结,只有这样才能得到提高,探求出更好的方式,欢迎大家共同探讨。

 

 

视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058