1

私は cocos2d-js を使用しています。これは購入中のアプリです。購入が成功したら、cocos2d-js にメッセージを通知して ui などを更新する必要があります。

cocos2d-js からの Call Objective-C は次のようなものです。

jsb.reflection.callStaticMethod("objective-cClass","methodName:", "parm");

しかし、objective-cからcocos2d-jsを呼び出す方法...

4

2 に答える 2

1

ご存知のように、objective-c は c++ メソッドを簡単に呼び出すことができるため、次のように使用できます。

jsval ret;
ScriptingCore::getInstance()->evalString("CommonFun.setDiamond(88)", &ret);

cocos2d-x 3.8 の場合は、head ファイルを含めることを忘れないでください。

#include "cocos/scripting/js-bindings/manual/ScriptingCore.h"
于 2015-12-21T11:25:15.997 に答える
0

1: js がこのように objc メソッドを呼び出す方法、js は static メソッドのみを呼び出す

(1)//NativeOcClass.mm  filename
import <Foundation/Foundation.h>
@interface NativeOcClass : NSObject
+(BOOL)callNativeUIWithTitle:(NSString *) title andContent:(NSString *)content;
@end

@implement NativeOcClass
+(BOOL)callNativeUIWithTitle:(NSString *) title andContent:(NSString *)content{
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:title message:content delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
    [alertView show];
    return true;
}
@end

(2)for js file
var ret = jsb.reflection.callStaticMethod("NativeOcClass", 
                                           "callNativeUIWithTitle:andContent:", 
                                           "cocos2d-js", 
                                           "Yes! you call a Native UI from Reflection");

2:objc の js メソッドを呼び出す

(1)js method,e.g.//Test.js
var Test={
          myMethod:function(){
              console.log("call js");
              }
          }
(2)objc //filename.mm
#include "cocos/scripting/js-bindings/manual/ScriptingCore.h"
....
-(void)callJsMethod
{
   jsval ret;
   ScriptingCore::getInstance()->evalString("Test.myMethod()", &ret);
}
于 2016-01-08T09:23:52.717 に答える