标签:cocos2d cocos2d-js html5 javascript js
在Cocos2d-JS v3.0 RC2中,与Android上js调用Java一样,Cocos2d-JS也提供了在iOS和Mac上js直接调用Objective-C的方法,示例代码如下:
var ojb = jsb.reflection.callStaticMethod(className, methodNmae, arg1, arg2, .....);
在jsb.reflection.callStaticMethod
方法中,我们通过传入OC的类名,方法名,参数就可以直接调用OC的静态方法,并且可以获得OC方法的返回值。
NativeOcClass
,只要你将他引入工程,那么他的类名就是NativeOcClass
,你并不需要传入它的路径。 import <Foundation/Foundation.h>
@interface NativeOcClass : NSObject
+(BOOL)callNativeUIWithTitle:(NSString *) title andContent:(NSString *)content;
@end
callNativeWithReturnString
,由于没有参数,他不需要:,跟OC的method写法一致。 +(NSString *)callNativeWithReturnString;
NativeOcClass
的方法,在js层我们只需要这样调用: var ret = jsb.reflection.callStaticMethod("NativeOcClass",
"callNativeUIWithTitle:andContent:",
"cocos2d-js",
"Yes! you call a Native UI from Reflection");
title
和content
设置成你传入的参数,并返回一个boolean类型的返回值。 +(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;
}
ret
中接受到从OC传回的返回值(true)了。在OC的实现中,如果方法的参数需要使用float、int、bool的,请使用如下类型进行转换:
+(float) addTwoNumber:(NSNumber *)num1 and:(NSNumber *)num2{
float result = [num1 floatValue]+[num2 floatValue];
return result;
}
转载自:http://www.cocos2dx.net/post/254
【cocos2d-js官方文档】二十三、如何在IOS平台上使用js直接调用OC方法
标签:cocos2d cocos2d-js html5 javascript js
原文地址:http://blog.csdn.net/qinning199/article/details/42045765