XXIII、どのような方法で直接OC呼び出しIOSプラットフォーム上でJSを使用するには、[公式ドキュメントCocos2dは-JS]を

JavaなどのAndroid Cocos2d-JS JSコールでバージョン3.0 RC2で、Cocos2d-JSはまた、Objective-Cの、次のサンプルコードにiOSとMacのjsの直接通話するための方法を提供します:

    var ojb = jsb.reflection.callStaticMethod(className, methodNmae, arg1, arg2, .....);

ではjsb.reflection.callStaticMethodこの方法、私たちはOC、メソッド名のクラス名を通過し、パラメータが直接静的メソッドOCを呼び出すことができ、およびOCは、戻り値を取得することができます。

カテゴリ

  • パラメータのクラス名は、唯一のJavaとは異なり、クラス名がパスを必要としない、OCにクラス名を渡す必要があります。たとえば、あなたがプロジェクトの下に新しいカテゴリを作成しNativeOcClass、限り、プロジェクトにあなた彼は、その後、彼はクラス名であるとしてNativeOcClass、あなたはそのパスに渡す必要はありません。
  1.  
    インポート<財団/ Foundation.h>
  2.  
    @interface NativeOcClass:NSObjectの
  3.  
    +( BOOL)callNativeUIWithTitle :( NSStringの*)表題andContent :( NSStringの*)コンテンツ、
  4.  
    @終わり

方法

  • jsが唯一のクラスのOC OCの静的メソッドのサポートを反映しています。
  • パラメータを使用して場合は特に、我々は法の完全な名前を渡す必要があることに注意することはメソッドをメソッド名を比較するには、あなたは彼にする必要があります。そのベルトを。上記の例によります。andContent:この時点では、メソッド名はcallNativeUIWithTitleあり、それらの間をお見逃しなく。
  • それは引数を取らない場合は、その後、彼は:,次のコードを必要としない、彼のメソッドの名前はcallNativeWithReturnString、引数がないため、彼は必要ありません:OCを書き込む方法と一致しています。
    +(NSString *)callNativeWithReturnString;

使用例

  • 次のサンプルコードは、上記呼ぶNativeOcClass方法、我々は唯一の呼び出しに必要なJSの層を:
  1.  
    VAR RET = jsb.reflection.callStaticMethod("NativeOcClass"、
  2.  
    "callNativeUIWithTitle:andContent:"、
  3.  
    "cocos2d-JS"、
  4.  
    )「はい!あなたはリフレクションからネイティブUIを呼びます」。
  • ここでOCを達成するための方法は、あなたが見ることができるポップアップダイアログボックスのネイティブです。とにtitleしてcontent、あなたのパラメータを設定するには、渡された、とboolean型の戻り値を返します。
  1.  
    +( BOOL)callNativeUIWithTitle :( NSStringの*)表題andContent :( NSStringの*)内容{
  2.  
    UIAlertView * alertView = [[ UIAlertViewのalloc] initWithTitle:タイトルメッセージ:内容デリゲート:自己cancelButtonTitle:@ otherButtonTitles "キャンセル":@ "OK"を、ゼロ];
  3.  
    [alertViewショー]。
  4.  
    返却はtrue。
  5.  
    }
  • この時点で、あなたはできるret受信で返さOCから(真の)値を返します。

ご注意ください

実装のOCでは、パラメータ方法は、フロートの使用を必要とする場合、int型、ブール値、変換の次のタイプを使用します。

  • フロート、int型、のNSNumberを使用
  • BOOLのbool型を使用してください。
  • 例えば、次のコードは、我々は2つの浮動小数点数を渡し、その後、合併へのリターンを計算し、我々は、パラメータとして入力する代わりに、整数、フロートのNSNumberを使用します。
  1.  
    +( フロート)addTwoNumber :( のNSNumber *)NUM1と:( のNSNumber *)NUM2 {
  2.  
    フロート結果= [NUM1に従ってFloatValue] + [NUM2に従ってFloatValue]。
  3.  
    結果を返します。
  4.  
    }
  • 現在のパラメータと戻り値はint型、float型、ブール値、文字列、サポートされていないタイプの残りの部分をサポートしています。

 

します。https://blog.csdn.net/qinning199/article/details/42045765より転載

おすすめ

転載: www.cnblogs.com/wodehao0808/p/11929646.html