banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

ActionScript 学习手记之ExternalInterface的使用

Flash ActionScript 学习手记之 ExternalInterface 的使用回家之前接到来自学校软件协会的一个开发任务,要求实现.Net 与 Flash 之间的相互操作,具体要求实现 C# 对 flash 对象 (DisplayObject 和 DisplayObjectContainer) 的操作,包括插入、删除、复制、同时还要实现对象的放大、缩小、旋转、转置,图层移动等等

现在开发基本结束,发布一下我的 AS 学习手记,说实话,在接到任务之前我是对 flash 和 AS 一窍不通,不过现在通了是通了一窍了,哈哈。 源代码可以参阅http://www.lidaren.com/archives/301

Flash ActionScript 学习手记一 ExternalInterface 的使用,实现与 C# 的相互操作

flash AS 使用 API XML 来实现与 Flash 控件的通信具体的格式使用如下:

外部调用 Flash 的方法函数 ??? ??????? ... (individual argument values) ???

返回结果 (XML) 支持以下类型:

invoke 节点中的属性 “name” 表示访问的函数名,“RETURNType” 表示返回结果 类型,目前 AS3 支持 Byte, XML 和 JSON argument 节点表示输入参数,可以是一个或者多个,必须与被调函数的参数列表相同

以下是 Flash 与 C# 交互的 demo

Flash ActionScript:

import flash.external.ExternalInterface;
// 调用 C# 函数
//flash2Csharp 函数名,参数 "test"
ExternalInterface.call ("flash2Csharp", "test");
// 注册 C# 回调函数
//Csharp2flash 函数名
ExternalInterface.addCallback ("Csharp2flash",Csharp2flash);
// 注册函数
function Csharp2flash (s)
{
trace(s);
}

C# 部分

public class Form1 : Form
{
//...
....
//...

private AxShockwaveFlashObjects flash = new AxShockwaveFlashObjects();
private void Form1\_Load(object sender, EventArgs e)
{
flash.Movie = "test.swf"; //设置flash控件的播放文件
flash.FlashCall +=
	new AxShockwaveFlashObjects
	.\_IShockwaveFlashEvents\_FlashCallEventHandler(flash\_FlashCall);
//添加flashcall事件
this.CallFlash();
}

//flashCall,flash调用C#中的函数
private void flash\_FlashCall
	(object sender,
	 AxShockwaveFlashObjects.\_IShockwaveFlashEvents\_FlashCallEvent e)
{

XmlDocument xml = new XmlDocument();
xml.LoadXml(e.request);
XmlNodeList list = doc.GetElementsByTagName("arguments");
string s =
	list\[0\].ChildNodes\[0\].InnerText.ToString();
//解析XML
this.flash2Csharp(s);
}

private void CallFlash()
{
//C#调用Flash
flash.CallFunction("test");
}

private void flash2Csharp(string s)
{
	MessageBox.Show(s);
}

}

其他内容可以参阅 Adobe 的示例: http://www.adobe.com/go/learn_programmingAS3samples_flash_cn

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.