相关内容

 

 
现在位置:主页>flash player新闻> 文章内容

有趣的C #和Flash Player 8的API外

更新日期:2012-03-14 来源: 点击:

导言
在听取了所有伟大的新的改进了Flash Player 8的在Macromedia的最大今年,我的灵感采取的一个新的功能,引起我的眼试驾。该功能我讲的是外部的API 。

外部API允许开发者的动作,轻松互动集装箱程序,主办Flash Player 8的,反之亦然。大多数情况下,将最有可能是一个Web浏览器,但这并不总是如此。

正如许多C #中开发人员都知道,很容易房子一个ActiveX控件( IE浏览器版本的Flash Player 8 )中。 NET Windows应用程序。这意味着我们现在可以加载的SWF在我们的Windows应用程序,方便地传送数据来回(牢记关键字在本次发言是“容易” -尽管可能之前,它不近那样简单的API外使现在) !

对于我的测试程序,我决定开始移植的FLVPlayer我今年年初建成使用Flash Player 7 ,以Flash Player 8的。这仅仅是一个简单的程序,让双击播放FLV编码视频。

C #中- “动作通信
正如我以前所说的,沟通的Flash Player 8和其集装箱已取得了非常容易。新的类别,使这一进程很容易是ExternalInterface 。我们将开始动作。首先,我们需要进口这一新的阶层,所以我们可以使用它:

进口flash.external.ExternalInterface ;
下一步,我们已注册任何功能,我们要供外部:

ExternalInterface.addCallback ( “ loadAndPlayVideo ” ,无效, loadAndPlayVideo ) ;
基本上,上面的代码可以让我们打电话给loadAndPlayVideo功能(我将显示在一分钟)从C #应用程序。第二个参数是零,因为loadAndPlayVideo职能是对_root宣布的时间表。

该loadAndPlayVideo功能如下;基本上它的文件路径,并提出它的内容路径的一个实例FLVPlayback组件命名videoPlayer 。

功能loadAndPlayVideo (地址:字符串) :无效

videoPlayer.contentPath =开放;

这是从动作方面,现在我们需要做的是调用函数从C # 。首先,我购买的一个实例Flash Player 8的ActiveX控件我的形式和加载的SWF我们创建的窗体的构造函数:

私营AxShockwaveFlash flashPlayer ;
公共FLVPlayer ( )

/ /错误处理删除为了冷凝代码
flashPlayer.LoadMovie ( 0 , Application.StartupPath + “ \ \ player.swf ” ) ;




下一步,我们要做的是调用时所需的外在方法。在我的情况下,它是针对用户选择一个文件从一个标准OpenFileDialog :

fileDialog =新OpenFileDialog ( ) ;
fileDialog.Filter = “ *. flv | *. flv ” ;
fileDialog.Title = “选择一个Flash视频文件...";
fileDialog.Multiselect =虚假的;
fileDialog.RestoreDirectory =真实;
如果( fileDialog.ShowDialog ( ) == DialogResult.OK )

flashPlayer.CallFunction ( “ ”援引“ +
“名称= \ ” loadAndPlayVideo \ “ returntype = \ ”的XML \ “ ”
<arguments> <string> “ + fileDialog.FileName +
“ ” /字符串“ ” /论据“ ” /援引“ ” ) ;

这样就大功告成了!正如你所看到的,我们称之为loadAndPlayVideo派一个特殊格式的XML字符串包含的名称和方法援引名单功能参数。

动作- “ C #中通信
再次,您需要包括ExternalInterface的动作:

进口flash.external.ExternalInterface ;
然后拨打电话从动作,我们使用静态方法ExternalInterface类:

ExternalInterface.call ( “ ResizePlayer ”
videoPlayer.metadata.width , videoPlayer.metadata.height ) ;
正如你所看到的我打电话的一种方法,并通过所谓的ResizePlayer的宽度和高度的视频正在加载,作为参数。现在得到的信息在C #中,我们必须首先订阅FlashCall活动。要做到这一点,我说以下行的形式的构造:

flashPlayer.FlashCall + =
新_IShockwaveFlashEvents_FlashCallEventHandler ( flashPlayer_FlashCall ) ;
现在,提出的要求,在动作将收到的请求财产的事件的说法。对我特别呼吁的XML看起来就像这样:

<invoke name="ResizePlayer" returntype="xml">
<arguments>
的<number> 320 “ /数字”
的<number> 240 “ /数字”
“ /论点”
“ /援引”
所以,现在我们要做的是解析XML在事件处理程序和调用的C #功能当地:

XmlDocument文件=新的XmlDocument ( ) ;
document.LoadXml ( e.request ) ;
/ /获取所有论点
XmlNodeList名单= document.GetElementsByTagName ( “参数” ) ;
/ /由于在这种情况下,我只有一个要求从动作为C #我
/ /知道我需要援引ResizePlayer功能
ResizePlayer ( Convert.ToInt32 (清单[ 0 ] 。 FirstChild.InnerText ) ,
Convert.ToInt32 (清单[ 0 ] 。子[ 1 ] 。 InnerText ) ) ;
堇菜!现在是很容易通过数据之间来回动作和C # 。



 

所有评论

评论列表

用户名: 新注册) 密码: 匿名评论