flash与delphi间的通信

      AS2.0 2005-9-2 17:5
flash与delphi间的通信

flash的优势在于图形表现方面,但他不能对系统进行直接的底层操作。
delphi能,但他的界面一般都是灰突突的,想要开发出玫慕缑妗U媸且恍倪垦呐丁?
尤其是在善变的客户面前。

如果两者结合呢?自己想吧。。

首先我们还是考虑怎样实现,原理的东西你在delphi中搞懂了,在vb,c#等是一样的。

(1)在delphi中安装控件
swflash.ocx,要能在其他环境中运行flash,一定少不了他。你可以

在Win98的$Windows\System\Macromed \Flash中或在Win2000中的$Winnt\System32\

Macromed\Flash中找到它。

运行Delphi后,选择选单Component→Import ActiveX Control,找到SWFlash.OCX 文件进行安装。

安装完成后,ActiveX面板里出现TShockwaveFlash控件,这是Delphi对SWFlash.OCX的封装.使你能

够在delphi环境中使用delphi的语言控制flash.相关截图:


图片如下:


图片如下:


图片如下:

(2)flash调用delphi
安装好后,你可以把flash控件放到窗体上,做好了把?好,现在讨论怎样通过flash调用delphi中

的代码?在flash中有一个函数fscommand()他的说明是这样的:使 SWF 文件能够与 Flash Player

或承载 Flash Player 的程序(如 Web 浏览器)进行通讯。还可使用 fscommand 动作将消息传递

给 Macromedia Director,或者传递给 Visual Basic、Visual C++ 和其它可承载 ActiveX 控件的

程序。呵呵,也就是说可以向包含swflash.ocx的外部程序传递参数。


图片如下:

fscommand("mycommand", "msg");中的两个参数可以任意修改,然后你在delphi中判断。具体代表什么意思只有你知道。
(3)delphi调用flash
可以利用SetVariable('myinfo','val')函数,第一个参数是flash中主场景第一桢可见的变量,第二个参数是你要为变量附的值。
在delphi中如下,设置flash中的一个名为myinfo的变量值为字符串“val”
self.ShockwaveFlash1.SetVariable('myinfo','val');
这个有一个问题需要注意:
当向flash附值的时候,flash怎样知道变量的值已经改变了呢?
一般的做法是通过一个循环不断的检测变量值是否已经改变,这个显然效率很低。一个更好的做法是
var myval = "";
this.onmyvalchange = function(prop, oldval, newval, userData) {
    trace("delphi为myval附的新值为:"+newval);
};
_root.watch("myval", this.onmyvalchange);
利用变量的监视,如上。

(4)其他
开发过程中可能还会遇到很多问题,比如屏蔽右键菜单,在delphi中改变窗体大小flash不能自动刷新等,
都要一一解决,不断的提高自己的开发能力,做出不一样的软件来。
标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}