返回介绍

示例: 浏览器 JavaScript 通信

发布于 2021-06-19 18:03:21 字数 2983 浏览 925 评论 0 收藏 0

此示例将介绍 AS3 代码如何与浏览器中的 JavaScript 通信。 我们以 ExternalInterface ActionScript 类为例。

运行上述类时,BrowserCommunicator.TestCommunication() 函数将注册回调函数,以便浏览器 JavaScript 稍后调用此回调函数。 ActionScript 稍后将调用浏览器 JavaScript,这将弹出警报窗口。 然后,JavaScript 将调用突出显示的 ActionScript 函数,从而完成双向通信试验。


所需的 JavaScript

以下 JavaScript 需要添加至 Unity 发布 SWF 的 html 页面。 这将创建从 ActionScript 中调用的函数:

JavaScript

<script type="text/javascript">

function calledFromActionScript()
{
    alert("ActionScript called Javascript function")

    var obj = swfobject.getObjectById("unityPlayer");
    if (obj)
    {
        obj.callFromJavascript();
    }
}

</script> 


BrowserCommunicator.as(和匹配 C# 类)

ActionScript 3

package
{
    import flash.external.ExternalInterface;
    import flash.system.Security;

    public class BrowserCommunicator
    {
        //Exposed so that it can be called from the browser JavaScript.
        public static function callFromJavascript() : void
        {
            trace("Javascript successfully called ActionScript function.");
        }

        //Sets up an ExternalInterface callback and calls a Javascript function.
        public static function TestCommunication() : void
        {
            if (ExternalInterface.available)
            {
                try
                {
                    ExternalInterface.addCallback("callFromJavascript", callFromJavascript);
                }
                catch (error:SecurityError)
                {
                    trace("A SecurityError occurred: " + error.message);
                }
                catch (error:Error)
                {
                    trace("An Error occurred: " + error.message);
                }

                ExternalInterface.call('calledFromActionScript');
            }
            else
            {
                trace("External interface not available");
            }
        } 
    }
}

类的 C# 虚拟实现:

C#

[NotConverted]
[NotRenamed]
public class BrowserCommunicator
{
   [NotRenamed]
   public static void TestCommunication()
   {
   }
}


如何试验

只需调用 BrowserCommunicator.TestCommunication() 即可调用双向通信试验。


潜在问题

安全沙箱冲突

A SecurityError occurred: Error #2060: Security sandbox violation

发布的 SWF 无权访问 html 文件时将出现上述错误。 要在本地解决此问题,您可以:

有关 Flash 安全沙箱 (Security Sandboxes) 的更多信息,请参阅 Adobe 文档

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文