delphi与flash交互通信的优点在于:开发delphi应用程序时充分发挥flash表现力强的特点,只要运用得当,flash开发的色彩斑斓的界面就会出现在delphi应用程序当中,且无需delphi程序员去堆放大量浪费资源的控件。
delphi与flash交互具体存在两个问题:
1、如何能让delphi应用程序接收到flash发来的消息,并处理;
2、怎样能从delphi应用程序向flash传递命令,控制.swf文件的运行。以下逐一解决
注:我使用的时delphi 7+flash 8, 控件使用原生的TShockwaveFlash(此控件的安装,请参见其它资料),
一、flash向delphi发送消息:
flash向delphi发送消息其实很简单,只需要运用flash中自带的fscommand命令即可,此命令在作者能见到的各版flash中都存在,
尽管后期版本从安全角度考虑不提倡使用它,但在这里此命令我们仍可以大加利用。
例如(在qqp_528flash.swf中):
//flash中的代码
on (click){
fscommand("qqp_528","flash向delphi程序发消息了");
}
------------------
OK,以上代表flash中某一元件的单击事件会触发fscommand命令了,其中参数“qqp_528”是命令,后面的就是命令的值。
以下为在delphi中使用的接收代码:
procedure TFrmMain.Flash1FSCommand(Sender: TObject; const command,
args: WideString);
begin
If Command='qqp_528' Then
Begin
ShowMessage(args);
End;
end;
简单吧,在TShockwaveFlash控件中已经存在了专门接收命令的事件了"OnFSCommand",其它的就很清楚了。
二、delphi向flash传递指令:
delphi方面,执行代码如下:
Flash1.SetVariable('qqp_528toflash','这是delphi向flash传的');
从这一句代码可见,被执行的flash中必需存在变量名为"qqp_528toflash"的元件,应为文本元件(必须),后面是传递的内容。执行后会在flash中名为qqp_528toflash的文本元件中显示传入的“这是delphi向flash传的”这段内容。
另外注意,以上只是代码的片段,在执行以上代码之前千万别忘了在delphi应用程序中播放flash呀,
播放代码为:
Flash1.LoadMovie(0,'qqp_528flash.swf');
Flash1.Play;
在此得特别感谢“西沉空间*永远的红茶“等大批前辈的帖子,谢谢。