2012-08-23 53 views
1

我必须实现HTML5 AsyncFileAPI使用普通NPAPI。还有回调机制微软游戏手柄重要事件。如何实现异步NPAPI插件

问题我面临的是如何实现threadcallasync,并且无缝地将数据从简单的NPAPI插件发送到JavaScript。一些有用的链接或工作代码将不胜感激。我是NPAPI插件中的新成员。 threadcallasync我必须在Linux中实现,已经看到一些在Windows中实现的链接。

回答

2

我肯定会推荐使用FireBreath来创建你的插件;它会为你解决大部分难题,你可以在how to do async calls上找到教程。

如果您选择不这样做,基本上只需传递一个JavaScript函数,该函数在NPAPI中将成为NPObject,然后当您的操作完成时,在回调NPObject上使用NPN_InvokeDefault。当然,您需要在主线程上执行此操作,这需要一些向主线程发送消息的方法,以告诉它发出呼叫。

一般来说NPN_PluginThreadAsyncCall会这样做;你给它一个函数指针和一个void *以及你需要的数据,它会在主线程中调用你的函数。不幸的是,在Windows和Mac上的Safari 5.1似乎已经不再支持这个功能。 Windows上的替代方法是使用LPARAM中的不透明指针创建消息HWND和PostMessage。在Mac上,您可以使用PerformSelectorOnMainThread或NSTimer。我不知道如何在Linux上做到这一点。

当然,FireBreath为您处理所有这些问题,并将回调包装在可从任何线程调用的JSObjectPtr中...您称之为firebreath将为您调用正确的线程。它也将在IE上运行......但这取决于你。我尝试给出其他选择,因为我写了大部分FireBreath,而且我有点偏见。

(只因为我有偏见并不意味着我错了)

祝你好运!

+0

非常感谢你的出纳员。我必须只使用普通的NPAPI,Firebreadth我已经实现了异步调用。简单NPAPI如何做到像调用特定线程一样的firebreadth,并将回调包装在JSObjectPtr中。再次感谢。 –