【问题标题】:Object oriented Javascript, communication with Flash面向对象的 Javascript,与 Flash 的通信
【发布时间】:2013-09-20 13:38:39
【问题描述】:

我了解 ActionScript 3 中的 ExternalInterface.call('functionName', arguments); 可用于与 HTML 页面上定义的 Javascript function functionName(arguments) 进行通信。

但是自定义对象实例呢?说我有:

(function (factory, $, undefined) {

    factory.worker = function () {
        ...
    };

    factory.worker.prototype.init = function (params) {
        ...
    };

    factory.worker.prototype.flash_tell_me_something = function (params) {
        ...
    };

}(window.factory = window.factory || {}, jQuery));

为了使用它,我将它与jQuery结合起来创建一个实例,加上Flash对象:

$(document).ready(function () {
    var myworker = new factory.worker();
    myworker.init();
    var myloadedcallback = function () {
    };
    flashVars = {loadedCallback: myloadedcallback};
    ...
    swfobject.embedSWF(swfUrl, id, 215, 138, version, null, flashVars, params);
});

如何从 Flash 中调用 myworker.flash_tell_me_something(...)

【问题讨论】:

    标签: javascript jquery actionscript-3 flash


    【解决方案1】:

    试试这个解决方案:

        if(ExternalInterface.available)
        {
            ExternalInterface.call("window.myworker.flash_tell_me_something", "hello");
        }
    

    您也可以直接调用worker,而不是window.worker(如果它们(worker 和 flash 对象)在同一个命名空间中)。

    【讨论】:

    • 您好,感谢您的回答。我这里的真实情况包含'myworker'的嵌套级别,调用来自较低级别。可能是这样的:window.myworker1.myworker2.myworker3.call。问题是myworker3 不知道嵌套图。您能否在myworker的级别及其名称未知的情况下详细说明您的答案?
    • 所以你想说,那个flash不知道目标worker的路径?如果是这样,您可以将此路径添加到 flash vars 或添加一些 'setupFlashJSBridge' 回调到 flash 并在运行时传递此参数。
    • 也许你需要这样的东西:在你的 flash 文件中,你可以通过 loaderInfo.parameters 访问传递的 flashvars,所以也许这对你有用 ExternalInterface.call(MovieClip(this.root).loaderInfo.parameters。 loadCallback, '你好');
    猜你喜欢
    • 2013-05-23
    • 2011-01-02
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 2012-06-24
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多