小怪物重制计划第六天

今天继续沿着JSB的底层文件开始研究。

里面出现了一个CCMBProgressHUD,是一个等待旋转的UI部件,开源项目,被归在SDK/other目录下;还有CCOPENUDID,也是一个开源项目,引入一个每台机器专属的ID。

研究的主体sendMessageToast底层也是一个开源项目,在iOS下模拟android提示的iToast。

调用这个结构就到OC层了。这里复习一下OC的知识,成员函数以+开头的表示不用创建类的实例就可调用,普通的成员函数以-开头。

    [[[[iToast makeText:NSLocalizedString([NSString stringWithUTF8String:message],@"")] setGravity:iToastGravityBottom] setDuration:iToastDurationNormal] show];

这句涉及的知识点:NSLocalizeString为本地化,将传入的参数转为对应的本地语言;makeText是不需要声明实例就可调用的,生成的对象再调用setGravity,返回的对象继续调用setDuation设置参数,最后返回的对象执行show。

重制计划里我删掉了很多原项目中引用的外部SDK,所以产生了不少问题。发现项目修改了引擎的CCFileUtils文件里的getFileData函数,把从硬盘读取文件数据的机制改为从自加密的pak和json文件中读取,这个机制应该是为内更新设计的。

这里面涉及了JsonReader,FileMgr几个外部SDK,大致逻辑是先获取文件在SD卡中的路径,如果路径存在,就从指定路径读取文件,不存在的话,就从默认路径读取。

注释掉PAK读取文件机制后程序可以运行了。

然后提示找不到对应方法,问题在调用方式上,绑定脚本会生成一个绑定类,里面有getInstance方法,还需要在项目入口调用JSB引擎时注册接口,这里是

register_all_configbinding,里面生成一个wrapperConfig类,然后调用其中的Config.getInstance()方法就能生成实例从而调用绑定好的接口。

到这里项目的第一次JSB绑定就结束啦。


这个接口经历了

CSystemInfoMgr(OC) -> JNI(封装接口)->config(c++)-> configbindings(JSB绑定)-> wrapperFunction(封装调用的接口 JS) ->实际调用(JS)

流程一旦调通了,后续的绑定开发就会比较顺利了。


现在开始做UI吧~



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值