我有两个swf文件。首先(让我们称之为A)一个是具有登录UI等的主机应用程序。第二个(B)由Unity生成。因此,A在用户加载并启动B之后的一些操作之后。此时我可以轻松地从A(C#)调用B(AS3)方法并且它可以工作,但是我不能从B(AS3)调用A(C#)方法。 official documentation page上没有关于此方向通信的任何信息。
所以,我试过this way,但它对我不起作用。所以我做了什么:
在C#(项目A)方面我创建了FlashCB.cs:
using UnityEngine;
using System.Collections;
[NotRenamed]
public class FlashCB {
public static int Func() {
Debug.Log("Unity function called with message. ");
return 10;
}
}
在AS3(项目B)方面NetTest.as:
import global.FlashCB;
[...]
public function onLoadComplete( evt : Event ) : void
{
[...]
var res:int = FlashCB.Func();
}
最后,它崩溃了这个错误:
[Fault] exception, information=ReferenceError: Error #1065: Variable FlashCB is not defined.
我做错了吗?
答案 0 :(得分:1)
我不知道有关Unity的内容,但我也在内部制作了一个带有Flash的C#应用程序。 我使用了这段代码,它运行正常:
AS3:
ExternalInterface.call('myfunction', >params<);
C#:
flashPlayer.FlashCall += new _IShockwaveFlashEvents_FlashCallEventHandler(flashPlayer_FlashCall); //this var is your Flash
private void flashPlayer_FlashCall(object sender, _IShockwaveFlashEvents_FlashCallEvent e)
{
//your flash call handler here
}