金捷
摘要:隨著Flash CS4及ActionScript 3.0的廣泛應(yīng)用,在Flash中可以實現(xiàn)各種功能,并可嵌入到Delphi中,實現(xiàn)兩者的交互,使Delphi界面變得更為生動、豐富,并改善了用戶的使用體驗。
關(guān)鍵詞:Delphi;Flash;ActionScrip;交互;設(shè)計流程
中圖分類號: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是一個集成開發(fā)環(huán)境,以圖形用戶界面為開發(fā)環(huán)境,透過IDE、VCL工具與編譯器,配合連結(jié)數(shù)據(jù)庫的功能,構(gòu)成一個以面向?qū)ο蟪绦蛟O(shè)計為中心的應(yīng)用程序開發(fā)工具。
隨著科技的不斷發(fā)展,各個領(lǐng)域?qū)赢嫷囊笤絹碓礁撸鳩lash作為一款可以作出任何動畫的軟件已被廣泛應(yīng)用,F(xiàn)lash可以通過添加圖片、聲音、視頻和特殊效果創(chuàng)作出既漂亮又可改變尺寸的導航界面,F(xiàn)lash可以包含簡單的動畫、視頻內(nèi)容、復雜演示文稿和應(yīng)用程序以及介于它們之間的任何內(nèi)容。
ActionScript是一種基于ECMAScript的面向?qū)ο缶幊陶Z言,用來編寫Adobe Flash電影和應(yīng)用程序,與以前版本相比,Action Script 3.0代碼的執(zhí)行速度快了數(shù)倍,而且語言簡單,容易編寫、維護更輕松。使用ActionScript 3.0,開發(fā)人員可以編寫具有高性能的響應(yīng)性代碼。
2設(shè)計流程
要使Delphi與Flash交互,第一步必須先設(shè)計Flash界面,編寫ActionScript,當某件事件(如按鈕按下、鼠標移動等操作)觸發(fā)時,F(xiàn)lash將要作出何種反應(yīng),本文主要介紹如何使用ActionScript傳遞消息給Delphi。第二步,Dephi要接收Flash所傳遞來的消息,區(qū)別是何種消息并做出相應(yīng)操作。第三步,Delphi要發(fā)送命令到Flash,告訴Flash應(yīng)該做出什么“動作”。以上就完成了Delphi與Flash之間的交互。
2.1利用Flash設(shè)計元件
本文使用Flash CS4為例,先新建所需的元件,可以是文本、按鈕、也可以是圖片、流媒體等。然后設(shè)計主界面,把所需的元件擺放到相應(yīng)位置。再對各個元件進行相應(yīng)的動畫特效設(shè)計,這里不再詳解。
2.2用ActionScript編寫事件發(fā)送消息
在某一幀中鼠標右鍵,選擇“動作”,這里以按鈕為例,編寫如下語句,為button1加上監(jiān)聽,當鼠標點擊時觸發(fā):
button1.addEventListener(MouseEvent.CLICK,button1click);
function button1click (e:MouseEvent):void {
fscommand("button1","button1事件");
}
這里,MouseEvent.CLICK就是鼠標點擊操作,起名為“button1click”,又如:MouseEvent.ROLL_OVER就是鼠標滑過操作。fscom mand就是發(fā)送消息函數(shù),“button1”就是發(fā)送的消息,為字符型,此例由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調(diào)用ActionScript函數(shù)時使用的名稱,str就是接收到的字符型消息,由Flash判斷是何種消息,再做出相應(yīng)操作。
設(shè)計和編寫完所有代碼后導出影片,生成swf文件,放在Delphi的執(zhí)行文件同一目錄下即可。
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傳遞的是哪條消息后再做出相應(yīng)操作。
2.5 Delphi傳消息給Flash
在Delphi中編寫語句如下:
ShockwaveFlash1.CallFunction(
CallFunction就是發(fā)送消息的函數(shù),"setcolor"就是2.3中從JavaScript調(diào)用ActionScript函數(shù)時使用的名稱,"red"表示傳遞的消息。以上的幾個步驟就完整了Delphi和Flash的一次交互。
3應(yīng)用
Flash不但可以使Delphi界面更豐富、更生動,還有多方面用途。
當我們需要在界面上動態(tài)地顯示各種設(shè)備運行情況(如水泵運行狀態(tài)、水流方向、水箱溫度值、自動扶梯運行情況等)而苦于沒有合適的Delphi插件時,就可以通過這種方法解決難題。先在Flash中畫出各種設(shè)備,設(shè)計特效,用ActionScript編寫后嵌入到Delphi中,由Delphi采集數(shù)據(jù),加以處理后發(fā)送到Flash,最后在Flash中動態(tài)地顯示當前設(shè)備的運行情況與各種信息。這樣可以讓使用者更直接的看到各設(shè)備的運行或報警情況而不必時刻盯住布滿數(shù)值的界面了。
4結(jié)束語
以上方法既可以顛覆Delphi一貫傳統(tǒng)老套的界面,又可以動態(tài)、美觀的方式表現(xiàn)工程設(shè)備運行情況,讓軟件使用者體會到方便與人性化。
參考文獻:
[1]吳志華,邱軍虎.Flash CS4動畫設(shè)計與制作208例[M].北京:中國郵電出版社,2009.
[2]張嶺,宋坤,梁冰.Delphi程序開發(fā)范例寶典[M].北京:中國郵電出版社,2006.
[3] Flash素材源碼共享平臺[EB/OL].http://www.flashline.cn/.