3

如何通过 ExternalInterface 使 EventDispatcher 扩展类的“​​addEventListener”对 javascript 可见,以及如何使其与 javascript 函数一起使用以便在 flash 对象中发生事件时调用 js 函数?

事件可能吗?或者它可能需要一些技巧才能使其工作?这个想法是让它自然,就像在javascript中调用addeventlistener一样,当内部事件发生时flash调用javascript回调?

前任:

JAVASCRIPT:

flashobj.addEventListener("progress", function (event){alert(event.data);});

闪光:

ExternalInterface.addCallback("addEventListener_", addEventListener);
// as flashObj is a DOM interface after all, I have my reserve in using "addEventListener" as the name for the callback.
... // later in that code:
dispatchEvent(new Event("progress"));
// or
dispatchEvent(new JSEvent("progress"));

结果显然是对 js 函数的调用,该函数将提醒 event.data 任何可能发生的事情。

4

1 回答 1

3

你不能像这样传递一个 javascript 函数来闪烁。

您可以在您的 javascript 中接受侦听器并从 flash 中触发这些侦听器。

ExternalInterface.call( "flash.event", "progress");
ExternalInterface.call( "flash.event", "loaded");
//Etc

Javascript:

var flash = {

    types: {

    },

    event: function( type ) {
        var listeners = this.types[type];

        if( listeners ) {
            for( var i = 0; i < listeners.length; ++i ) {
                listeners[i]();
            }
        }
    },

    addEventListener: function( type, fn ) {
        if( !this.types[type] ) {
            this.types[type] = [];
        }

        this.types[type].push(fn);
    }

};

flash.addEventListener( "progress", function(){

});
于 2012-07-09T07:09:30.097 回答