前提:引用以下两个dll
AxInterop.ShockwaveFlashObjects.dll
Interop.ShockwaveFlashObjects.dll
假如没有,可以到flash官方下载。
以上两个dll,除包含和c#本例要的的类和方法外,也已经继承了flash播放器了。
下面开始,介绍:
1> 定义一个private AxShockwaveFlashObjects.AxShockwaveFlash axShockwaveFlash1;
并加载某一flash,比如 test.swf,(推荐直接从面板中拖出flash,然后设置相关属性)
this.axShockwaveFlash1.LoadMovie(0, “test.swf”);
2> 实现从flash 传递一些信息到C# 内部:
主要是为flash的一些original event 加一些c# function,例如:
this.axShockwaveFlash1.FSCommand +=new AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEventHandler(axShockwaveFlash1_FSCommand)
这里的FSCommand是flash本身的一个事件,这里给他加上一个函数axShockwaveFlash1_FSCommand
private void axShockwaveFlash1_FSCommand(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEvent e)
{
// We only want to react if we got our command
if (e.command == "flashMessage")
{
this.richTextBox1.AppendText(e.args + "/n");
}
}
3> 实现从C#内部传递信息给flash,直接调用flash的一个函数就可以了。
this.axShockwaveFlash1.SetVariable("CSharpMessage", "Hi Flash!");
要实现上面的功能,还必须在flash里面写代码
/////////////////////////////////////////////////////////////////
// C-Sharp-Message-Broadcaster
// bcCSharpMessage,onCSharpMessage,CSharpMessage不是系统自带的
/////////////////////////////////////////////////////////////////
_root.bcCSharpMessage = function (varName, oldVal, newVal)
{
arguments.callee.broadcastMessage("onCSharpMessage", newVal);
}
ASBroadcaster.initialize(_root.bcCSharpMessage);
_root.onLoad = function ()
{
this.CSharpMessage = null;
this.watch("CSharpMessage", this.bcCSharpMessage);
// 这里的"CSharpMessage" 是dll里面SetVariable("CSharpMessage", "Hi Flash!");
}
/////////////////////////////////////////////////////////////////
// Test
/////////////////////////////////////////////////////////////////
// Receive from C-Sharp
obj = new Object();
obj.onCSharpMessage = function (strMessage)
{
_root.flashoutput_txt.text += strMessage + "/n";
}
_root.bcCSharpMessage.addListener(obj);
// Send to C-Sharp
_root.buttonSend_mc.onRelease = function ()
{
fscommand("flashMessage", "Hi C-Sharp");
//fscommand 可以给c#接收
}
本文介绍了如何使用C#与Flash进行双向通信的方法。通过引入AxInterop.ShockwaveFlashObjects.dll和Interop.ShockwaveFlashObjects.dll两个DLL文件,实现从Flash向C#发送消息及从C#向Flash传递信息的功能。
下引用flash转帖&spm=1001.2101.3001.5002&articleId=5733454&d=1&t=3&u=82573a6f0b4347068a5b99bdc016ed92)
515

被折叠的 条评论
为什么被折叠?



