如何从AS3脚本调用C#方法?

时间:2013-04-06 00:44:59

标签: flash unity3d

我有两个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.

我做错了吗?

1 个答案:

答案 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
}