从firebreath.org上查看此页面,我发现了以下摘录:
您可以将JSAPI实例以JSAPIPtr的形式返回给JavaScript调用程序,并使用该实例对不同的JSAPI对象进行调用,例如plugin().method1().mmethod2()将对根JSAPI对象调用method1(),对第一次调用中返回的JSAPI对象调用method2(。
有什么例子吗?
我的目标:
我想通过我的根JSAPI对象调用另一个类的(它也在实现FB:JSAPIAuto)成员(比如ABCAPI:FB:JSAPI Auto),该对象由预脚本自动创建,即与上面通过创建类的JSAPIPtr所描述的相同。我就在这里吗?
此外,我创建的ABCAPI的JSAPI对象是否也应该获得插件引用?
我也浏览了这一页,但无法跟上。
到目前为止,我可以创建一个返回FB::JSAPIPtr的方法,该方法具有另一个Class(实现FB::JSAPIAuto)指针的值。
一个小小的例子在这里会有很大的帮助!
*另一个疑问:如何向Javascript公开一个简单的c++类(不扩展任何Firebreath类),以便我可以访问其成员*我发现了一个v8Javascript引擎。对此别有任何想法。我希望我的插件可以用于除chrome之外的所有其他浏览器。我需要这个吗?
好吧,这里有几件事。首先,prep脚本不会为您创建JSAPI对象——这就是fbgen。这是一个重要的区别,因为您将多次运行prep脚本,但fbgen只运行一次来创建项目框架。
接下来,您将使它变得比需要的复杂得多。JSAPI对象只是一个类对象;如果您在C++中有对它的引用,那么您可以像调用任何其他对象一样调用其他类的成员。它并没有什么神奇之处,只是当你把它交给javascript时,然后你向javascript公开的方法是你唯一可以使用的方法。
您没有解释的是对第二个JSAPI对象的引用来自哪里。你是从javascript传入的吗?如果是这样,事情就会变得更加棘手,您将不得不使用->Invoke来调用它,就像对从页面传入的任何其他javascript对象调用方法一样。你是用c++创建的吗?如果是这样,那么你就可以像使用其他对象一样使用它。
至于假设的ABCAPI对象是否应该获得插件引用,这完全取决于您。Root JSAPI对象不需要,这只是为了方便您访问插件。
例如,请查看firebreath代码库中的FBTestPlugin。它有嵌套JSAPI对象之类的例子。