张禹(福建财会管理干部学院计算机系)
摘要:Director和Flash两种软件都是在多媒体系统开发领域常用的工具,但是二者在开发过程中如何更好地协调配合使用却是一个值得关注的问题。本文介绍了两种多媒体开发工具Director和Flash的发展历史,讨论了二者在交互控制、数据库绑定等方面的差异。
关键词:DirectorFlash多媒体系统
中图分类号:TP391
0引言
Director、Flash这两种多媒体开发工具都是Macromedia公司在多媒体开发领域的拳头产品,它们与另一种开发工具Authoware并称为“多媒体三剑客”,然而Authoware由于其本身交互语言功能的限制,以及对视频、音频等多媒体素材的兼容上容易出错,当Macromedia公司被Adobe收购之后,一直没有官方的新版本出现,逐渐被冷落。而Director与Flash却依然如日中天,2008年初AdobeDirector11与AdobeShockwavePlayer上市,而Flash更是有:AdobeFlash8、AdobeFlashCS3、以及AdobeFlashPlayer8、9等多个版本在Adobe名下发布。本文将对Director和Flash在开发应用上的异同点进行探讨,使得用户能够充分发挥二者的优势并加以合理利用,从而提高多媒体系统开发的效率。
1两种开发工具的开发方向
当前,许多www的站点以Flash作为系统开发的重要工具,制作诸如导航、菜单、公告等页面元素,另外,随着web2.0概念的提出,Flash的“孪生兄弟”Flex成为了新兴的RIA(富互联网应用程序)系统的一个重要开发工具。但是,有得必有失,Flash因其小巧很快在互联网走红,但它所支持的多媒体资源有限,比如无法支持3D渲染,无法流畅支持高质量视频,这就使得系统的表现力大打折扣,因此,客观地说,Flash开发的系统更适用于网络平台,而要制作表现力更加强大、信息量更加丰富的桌面多媒体系统,还是要用Director来实现,Director凭借其海量的Xtras外挂程序的支持,优秀的内存管理调度能力,以及对3D资源的强力整合,能够非常轻松地实现复杂效果的设计过程,然而,Director的缺点也很明显,它所生成的发布文件以及所需的shockwave播放插件本身要比Flash大得多,因此虽然它支持网络发布的模式,但是它并不适合像Flash所创建的系统那样以B/S模式的姿态出现,受限于网络带宽,没有用户愿意花费大量的时间去在浏览器上等待一个未知数。故而Director更多的面向的是本地的产品展示或者C/S模式的多媒体系统客户端。
2交互控制
2.1Lingo、JavaScript与ActionScriptDirector和Flash都提供了功能强大的交互语言,Director中可以采用Lingo与Javascript(Director10后新增)两种语言,Flash中只提供了ActionScript语言。相比较,Director的兼容性更好些,给用户的选择余地更多,因为Javascript拥有更多的用户基础,很多人在网站开发等相关项目中都或多或少地接触过它。而Lingo语言是一个典型的事件驱动编程语言,非常适合于多媒体交互系统的开发,但是它的用户基础相对薄弱,一般只有涉及Director多媒体开发才会使用到,所以可能一些用户使用起来需要一定的时间来上手。对于Flash中的ActionScript语言,最早出现在Flash3中的ActionScript1.0语法冗长,主要的应用是围绕着帧的导航和鼠标的交互.这种状况一直保持到Flash5.到Flash5版本时ActionScript已经很象JavaScript了。它提供了很强的功能和为变量的传输提供了点语法。ActionScript同时也变成了一种prototyped(原型)语言,允许类似于在javscript中的简单的oop功能。ActionScript的最新版本是ActionScript3.0,它不再只局限于制作Flash特效,更体现在对基于Flex的RIA(富互联网应用程序)系统的支持上,这些都使得ActionScript的地位与日俱增。
2.2Director与Flash之间的信息传递方式无论是Director中的Lingo,或是Flash中的ActionScript,它们都提供了与对方的接口,实现Director和Flash的相互控制。
2.2.1FlashToDirector的信息传递
①在Flash中可以通过Geturl函数直接调用Director的Lingo命令,如
on(rollover)
{geturl(“lingo:cursor?280“);}
on(rollout)
{geturl(“lingo:cursor?0“);}
将上面的actionscript加在Flash按钮上,然后将其导入到Director中就能实现光标的变换了。
②使用Flash中的event命令,如:geturl?(“event:readtxt,\”c.txt\”,\”dairy\””)
上面的actionscript可以执行director中的影片脚本中的readtxt函数,并传递“c.txt”和“dairy”两个参数给readtxt函数。
2.2.2DirectorToFlash的信息传递:
①在Director中控制Flash演员播放、停止等命令
sprite(FlashSpriteNum).play()——播放Flash演员
sprite(FlashSpriteNum).stop()——停止Flash演员的播放
类似的函数有rewind()、gotoframe()等等,其详细的用法见前面的“控制Flash”。
②使用getVariable函数来直接获取Flash演员中的值
getVariable(spriteFlashSpriteNum,“password”)
——获取位于通道FlashSpriteNum中的Flash演员中变量password的值
③使用setVariable函数来设置Flash演员中的值
setVariable(spriteFlashSpriteNum,“password”,“admin”)
——将位于通道FlashSpriteNum中Flash演员中的password变量的值设置为admin
3数据库绑定
客观地说,无论Flash还是Director它们对数据库的支持都十分有限,以下对他们的连接数据库方式进行简要探讨:
3.1Director的数据库常用连接方式:
3.1.1使用列表(List)每种语言都有存储一组数据的能力。在有些语言中,称为数组。在Director的Lingo里,叫做列表(List)。列表可以分成两类:线性列表(1inearlist)和属性列表(propertylist)。线性列表是指包含在单个变量里的一串数字、字符串或数据。如包含人名/电话号码的线性列表例子:
myList=[["张三","85667788"],["李四","56453336"],["王二","86879996"]]
属性列表里的每个元素都包含一个属性名称和属性值。下面是一个典型的属性列表:
MyList=[#name:"张三",#phone:"85667788",#employeSince:2000]
在Lingo中尽管没有专门的数据库操作指令,但对于列表,Lingo提供了管理和操纵列表数据的命令。它们能在列表的开始或特定位置添加数据在列表的末尾增添数据从列表中删除数据从列表的特定位置访问数据编辑列表中存储的数据对列表中的数据排序计算列表中的数据项的数量。因此,利用列表list可以模拟实现数据库的功能。
3.1.2应用第三方专业的数据库插件(Xtra)针对Lingo语言在数据库操作方面的弱点。许多第三方厂商为Director专门设计了扩展其数据库功能的插件(Xtra)。它们的执行效率很高,封装性好,安装方便,有的可以跨平台使用。这些插件在Director和其暂时无法实现的功能之间架起了一座桥梁,为数据库功能的实现铺设了宽阔的大道,典型的插件主要有国外的Datagrip、EasyDB、V12以及国内自主开发的ODBC、bitDBreader等。
3.2Flash中的数据库常用连接方式:
3.2.1利用ASP实现数据库连接假如我们要用Flash做一个登陆界面,接受用户ID号,然后提交数据库查询,再返回其姓名,我们来看下如何实现。假设Flash端有一个按钮,ID号用变量"in—put"存储,返回的姓名赋给变量"output"。那么Flash端的AS代码如下:
on(release){loadvariables("search.asp?input=",0,vars=get)}
这样,当在动画过程中这个按钮被点击并释放后,Input变量将被传递给search.asp文件,传递方式为get。下面看一下search.asp如何接受并返回处理的结果:
dimuserid//定义变量
userid=request.form("input")//接收变量
setconn=-server.createobject("adodb.connection")//定义连接对象
setrecordset=server.createobject("adodb.recordset")//定义记录对象
conn.open"user"//打开数据库连接的DSN//数据库处理程序
recordset.close
conn.dose
response.write("output="+server.urlencode("查询结果"))//从asp向Flash返回结果
上面使用函数server.urlencode(variablenarne)来保证传递回去的变量是按照URL格式编码的,这样便以最简单的方式实现了Flash和数据库的连接。
3.2.2其他方式除了前面介绍的两种方式外,Flash还可以通过类似于ASP的PHP、JSP脚本以及XML数据岛和基于Socket的中间件技术来实现数据库连接,由于文章篇幅的关系,此处就不一一赘述了。
4结束语
计算机多媒体技术是上世纪90年代兴起的一个计算机学科的重要分支,在未来的很长的一段时间内,都会吸引很多技术人员投身其中,进行各种多媒体系统的设计制作。随之而来的是多媒体开发工具种类的进一步丰富,界面的进一步友好,而如何根据不同系统的特点选择适当的开发工具是一个值得众多开发人员思考的问题。本文抛砖引玉,希望能够对从事多媒体系统开发的朋友们起到一定的借鉴作用。
参考文献:
[1]谢俊.DIRECTOR的数据库功能实现[J].福建电脑.2007(6):185-186.
[2]周国栋.Flash与数据库的连接技术.湖南广播电视大学学报.2005(4):48-50.
[3]颜志翰,李雅玫.精通DirectorMX2004多媒体开发[M].北京:清华大学出版社.2005.ISBN:7-302-10858-7/TP·0000.
[4]胡海,赵育倩,章精设.FLASHProfessional8标准培训教材[M].北京:人民邮电出版社.2007.ISBN:978-7-115-13636-7/TP.