Cocos2d 与OC的互相调用

JS里面调用OC

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

对应的Oc代码为:

    +(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;
    }

注意

在OC的实现中,如果方法的参数需要使用float、int、bool的,请使用如下类型进行转换:

float,int 请使用NSNumber类型
bool请使用BOOL类型。
例如下面代码,我们传入2个浮点数,然后计算他们的合并返回,我们使用NSNumber而不是int、float去作为参数类型。

+(float) addTwoNumber:(NSNumber *)num1 and:(NSNumber *)num2{
    float result = [num1 floatValue]+[num2 floatValue];
    return result;
}

目前参数和返回值支持 int, float, bool, string,其余的类型暂时不支持。

OC中调用JS代码

相关配置自行谷歌
语句为:

 NSInteger coins = [[currentProId stringByReplacingOccurrencesOfString:@"," withString:@""] integerValue];

    std::string jsCallStr = cocos2d::StringUtils::format("util.storeLayer.appBuySuccessed(%zd);", coins);

    ScriptingCore::getInstance()->evalString(jsCallStr.c_str());

其中util.storeLayer 是一个全局的layer.js.
appBuySuccessed 是方法,括号里面是参数.

附js调用oc返回

#define JSO_ERR_OK (0)
#define JSO_ERR_TYPE_NOT_SUPPORT   (-1)
#define JSO_ERR_INVALID_AEGUMENTS (-2)
#define JSO_ERR_METHOD_NOT_FOUND (-3)
#define JSO_ERR_EXCEPTION_OCCURRED (-4)
#define JSO_ERR_CLASS_NOT_FOUND (-5)
#define JSO_ERR_VM_FAILURE (-6)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值