前提:引用以下两个
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#接收
}