用户名: 密码: 验证码: QQ--程序群:31736530 动画群:38836599
闪无忧
 
首 页 业界新闻 业界杂谈 Flash教程 Flash源码 Flash图书 Flash酷站 Flex & AIR 供求信息
   本栏目通告:   无论老手还是新手,只要有自己的想法和建议,请大家积极投稿本栏目
当前位置 :首页>业界杂谈>资源分享>列表

如何为FLASH程序构造灵活的接口

[来源:SimpleLife blog | 作者:小力 | 时间:2008-05-03 | 点击:  | 收藏本文  【 】]
假如你只是做做展示动画,那么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","0x00ff00");
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","0x0000ff");

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辅助利器-SWFObject
下一篇:FLASH程序灵活的“接口”的应用
Tags:    FLASH程序 接口
>>> 最新评论:(共有 0 位网友发表了评论)      查看所有评论
  发表评论
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
·本站发布内容均为客观表达作者观点,不代表闪无忧立场,请勿攻击和漫骂
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
  业界杂谈
  业界前沿   资源分享
  经验技巧   七嘴八舌
  热门文章
·分享一些flash8序列号
·flash cs4序列号
·如何把fla,swf文件转换为flv格式问答
·flv制作工具大全
·在线flv转换mpeg4
·2006年Flex大型优秀网站欣赏
·Adobe Flex编码指南v1.2(AS3 Flex3程
·Flash 3D引擎汇集(附演示)
·flash8中文版高速下载地址
·我对as3声音架构的理解
关于我们 - 免责声明 - 网站地图 - 商务服务 - 联系我们 - RSS地图
©CopyRight 2006-2008, 5UFlash.COM, Inc. All Rights Reserved
鲁ICP备06034971号