0

我有两个 swf 文件。第一个(我们称之为A)一个是一种带有登录UI等的宿主应用程序。第二个(B)是由Unity生成的。因此,A 在用户加载并启动 B 的一些操作之后。此时我可以轻松地从 A (C#) 调用 B (AS3) 方法并且它可以工作,但我不能从 B (AS3) 调用 A (C#) 方法. 官方文档页面上没有关于这个方向通信的任何信息。

所以,我试过这种方式,但它对我不起作用。所以我做了什么:

在 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.

难道我做错了什么?

4

1 回答 1

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
}
于 2013-04-08T08:12:58.363 回答