0

firebreath.orgのこのページを見ると、次の抜粋が見つかりました。

JSAPI インスタンスを JSAPIPtr の形式で JavaScript 呼び出し元に返し、それを使用して別の JSAPI オブジェクトを呼び出すことができます。たとえば、plugin().method1().method2() はルート JSAPI オブジェクトで method1() を呼び出します。最初の呼び出しで返された JSAPI オブジェクトの method2() 。

例はありますか?

私の目的:

別のクラス (これも FB:JSAPIAuto を実装しています) のメンバー ( ABCAPI:FB:JSAPIAuto など) を、prepscript によって自動的に作成されたルート JSAPI オブジェクトを介して呼び出したいと思います。つまり、クラスの JSAPIPtr を作成することによって上記と同じです。私はここにいますか?

また、私が作成した ABCAPI の JSAPI オブジェクトプラグイン参照を取得する必要がありますか?

私もこのページを見ましたが、フォローできません。

これまで、別のクラス (FB::JSAPIAuto を実装) ポインターの値を持つ FB::JSAPIPtr を返すメソッドを作成できました。

ここでは、小さな例が非常に役立ちます。

*もう 1 つの疑問: 単純な C++ クラス (Firebreath クラスを拡張しない) を Javascript に公開して、そのメンバーにアクセスできるようにするにはどうすればよいですか? *v8 Javascript エンジンのものを見つけました。これについては何もわかりません。Chrome 以外のすべてのブラウザでもプラグインを利用できるようにしたいのですが、これは必要ですか?

4

1 に答える 1

0

さて、ここにはいくつかのことがあります。まず、prep スクリプトは JSAPI オブジェクトを作成しません。これは fbgen でした。prep スクリプトは何度も実行しますが、fbgen はプロジェクトのスケルトンを作成するために 1 回しか実行しないため、これは重要な違いです。

次に、これを必要以上に複雑にしています。JSAPI オブジェクトは単なるクラス オブジェクトです。C++ でそれへの参照がある場合は、他のオブジェクトと同じように、他のクラスのメンバーを呼び出すことができます。おそらくそれをjavascriptに与える場合を除いて、それについて魔法のようなことは何もありません.javascriptに公開するメソッドだけが使用できるということです。

あなたが説明していないのは、2 番目の JSAPI オブジェクトへの参照がどこから来るかです。javascriptから渡していますか?その場合、事態はさらに複雑になり、ページから渡された他の JavaScript オブジェクトのメソッドと同じように、->Invoke を使用して呼び出す必要があります。C ++で作成しましたか?その場合は、他のオブジェクトと同じように使用します。

仮想の ABCAPI オブジェクトがプラグイン参照を取得するかどうかは、完全にあなた次第です。ルート JSAPI オブジェクトには必要ありません。プラグインにアクセスする場合の便宜のためです。

例として、firebreath コード ベースのFBTestPluginを参照してください。JSAPI オブジェクトのネストなどの例があります。

于 2013-07-18T12:34:48.277 に答える