金捷
摘要:随着Flash CS4及ActionScript 3.0的广泛应用,在Flash中可以实现各种功能,并可嵌入到Delphi中,实现两者的交互,使Delphi界面变得更为生动、丰富,并改善了用户的使用体验。
关键词:Delphi;Flash;ActionScrip;交互;設计流程
中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)15-3566-03
The Interaction and Applications of Delphi and Flash
JIN Jie
(Shanghai Electric Power Hospital, Shanghai 200050, China)
Abstract: With the applications of Flash CS4and ActionScript 3,Flash can achieve a variety of functions,and it also can be embedded into Delphi,and interact each other,it makes the interface become more vivid,rich,and also improving the use experience.
Key words: Delphi; Flash; ActionScript; intercommunion; design
1 Delphi、Flash CS4、ActionScript简介
Delphi是一个集成开发环境,以图形用户界面为开发环境,透过IDE、VCL工具与编译器,配合连结数据库的功能,构成一个以面向对象程序设计为中心的应用程序开发工具。
随着科技的不断发展,各个领域对动画的要求越来越高,而Flash作为一款可以作出任何动画的软件已被广泛应用,Flash可以通过添加图片、声音、视频和特殊效果创作出既漂亮又可改变尺寸的导航界面,Flash可以包含简单的动画、视频内容、复杂演示文稿和应用程序以及介于它们之间的任何内容。
ActionScript是一种基于ECMAScript的面向对象编程语言,用来编写Adobe Flash电影和应用程序,与以前版本相比,Action Script 3.0代码的执行速度快了数倍,而且语言简单,容易编写、维护更轻松。使用ActionScript 3.0,开发人员可以编写具有高性能的响应性代码。
2设计流程
要使Delphi与Flash交互,第一步必须先设计Flash界面,编写ActionScript,当某件事件(如按钮按下、鼠标移动等操作)触发时,Flash将要作出何种反应,本文主要介绍如何使用ActionScript传递消息给Delphi。第二步,Dephi要接收Flash所传递来的消息,区别是何种消息并做出相应操作。第三步,Delphi要发送命令到Flash,告诉Flash应该做出什么“动作”。以上就完成了Delphi与Flash之间的交互。
2.1利用Flash设计元件
本文使用Flash CS4为例,先新建所需的元件,可以是文本、按钮、也可以是图片、流媒体等。然后设计主界面,把所需的元件摆放到相应位置。再对各个元件进行相应的动画特效设计,这里不再详解。
2.2用ActionScript编写事件发送消息
在某一帧中鼠标右键,选择“动作”,这里以按钮为例,编写如下语句,为button1加上监听,当鼠标点击时触发:
button1.addEventListener(MouseEvent.CLICK,button1click);
function button1click (e:MouseEvent):void {
fscommand("button1","button1事件");
}
这里,MouseEvent.CLICK就是鼠标点击操作,起名为“button1click”,又如:MouseEvent.ROLL_OVER就是鼠标滑过操作。fscom mand就是发送消息函数,“button1”就是发送的消息,为字符型,此例由Delphi接收,“button1事件”是对事件的描述。
2.3 Flash接收消息
在Flash某帧的动作中用ActionScript编写代码如下:
import flash.external.*;
ExternalInterface.addCallback("setcolor",setcolor);
function setcolor(str:String):String{
if(str== red ) text1.gotoAndStop(1);
else text1.gotoAndStop(3);
return 1;
}
“setcolor”就是从JavaScript调用ActionScript函数时使用的名称,str就是接收到的字符型消息,由Flash判断是何种消息,再做出相应操作。
设计和编写完所有代码后导出影片,生成swf文件,放在Delphi的执行文件同一目录下即可。
2.4 Delphi接收消息
本文以Delphi 6为例,首先需要在ComponentsImport ActiveX Control中添加Shockwave Flash控件,然后在主界面添加Shock waveFlash组件,此例取名为ShockwaveFlash1,在“Movie”属性中填写2.3中生成的swf的文件名,编译后就可以在Delphi中观看到Flash,甚至是其中播放的视频文件。
选择ShockwaveFlash1的OnFSCommand事件,双击,编写代码如下:
procedure TfrmRSMain.ShockwaveFlash1FSCommand(Sender: TObject;const command, args: WideString);
begin
If (command=button1) then
Begin
……
showmessage(args);
End
Else if (command=button2) then
Begin
……
showmessage(args);
End
……
end;
这里OnFSCommand为Delphi从Flash中所接收的事件,command为消息,args为描述,由Delphi判断Flash传递的是哪条消息后再做出相应操作。
2.5 Delphi传消息给Flash
在Delphi中编写语句如下:
ShockwaveFlash1.CallFunction(
CallFunction就是發送消息的函数,"setcolor"就是2.3中从JavaScript调用ActionScript函数时使用的名称,"red"表示传递的消息。以上的几个步骤就完整了Delphi和Flash的一次交互。
3应用
Flash不但可以使Delphi界面更丰富、更生动,还有多方面用途。
当我们需要在界面上动态地显示各种设备运行情况(如水泵运行状态、水流方向、水箱温度值、自动扶梯运行情况等)而苦于没有合适的Delphi插件时,就可以通过这种方法解决难题。先在Flash中画出各种设备,设计特效,用ActionScript编写后嵌入到Delphi中,由Delphi采集数据,加以处理后发送到Flash,最后在Flash中动态地显示当前设备的运行情况与各种信息。这样可以让使用者更直接的看到各设备的运行或报警情况而不必时刻盯住布满数值的界面了。
4结束语
以上方法既可以颠覆Delphi一贯传统老套的界面,又可以动态、美观的方式表现工程设备运行情况,让软件使用者体会到方便与人性化。
参考文献:
[1]吴志华,邱军虎.Flash CS4动画设计与制作208例[M].北京:中国邮电出版社,2009.
[2]张岭,宋坤,梁冰.Delphi程序开发范例宝典[M].北京:中国邮电出版社,2006.
[3] Flash素材源码共享平台[EB/OL].http://www.flashline.cn/.