cocos2dx java 调用lua_Cocos2d-x Lua实现从Android回调到Lua的方法

本文介绍了如何在Cocos2d-x Lua项目中处理Android回调,具体阐述了从Android调用C++,再到C++调用Lua的方法。在Android端定义回调方法后,通过JNI将回调传递给C++,然后C++使用LuaEngine调用lua中的对应函数,实现积分变化的同步通知。
摘要由CSDN通过智能技术生成

最近在研究怎么把积分墙嵌入到Cocos2d-x Lua的里,折腾了几天,总算调通了,主要要解决的问题是,调用积分墙之后,当积分发生改变的时候,有一个回调方法,回调会返回用户还剩下多少积分,当Android收到这个回调的时候,需要把这个通知给lua做对应的处理,我就是在这里卡住了。

先理一下思路要实现上面提到的回调通知lua,首先要实现Android回调给C++,再从C++去调用Lua的方法。

一步一步来,先看Android端的回调方法,当有积分变化的时候,onPointBalanceChange方法会被触发:

ce7638ad89c1ec9b3d6781ef348003f0.png

onPointBalanceChange方法里用到了一个pointsBalanceChange()的方法,这个方法在下面被定义成了本地函数,通过本地函数,来调用C++的代码

再看在C++的里的代码:

02532ac9a647122c0eba8a31904f6a9c.png

先判断是Android的情况下再进行下一步处理

然后写一个方法,这个方法的方法名图上已经有详细说明了

void Java_org_cocos

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用 Lua 语言和 Cocos2d-x 引擎实现按钮放大缩小的示例代码: ```lua -- 创建一个按钮 local button = ccui.Button:create("button_normal.png", "button_pressed.png", "button_disabled.png") button:setPosition(display.cx, display.cy) button:setTitleText("Button") button:setTitleFontSize(24) self:addChild(button) -- 定义按钮缩放的动作 local scaleSmall = cc.ScaleTo:create(0.1, 0.9) local scaleBig = cc.ScaleTo:create(0.1, 1.1) local scaleOrigin = cc.ScaleTo:create(0.1, 1) -- 注册按钮的触摸事件 button:addTouchEventListener(function(sender, eventType) if eventType == ccui.TouchEventType.began then -- 按下时缩小按钮 sender:runAction(scaleSmall) elseif eventType == ccui.TouchEventType.ended then -- 抬起时放大按钮 sender:runAction(scaleBig) -- 在此处添加按钮点击后的逻辑处理 elseif eventType == ccui.TouchEventType.canceled then -- 取消点击时恢复按钮原始大小 sender:runAction(scaleOrigin) end end) ``` 上述代码中,首先创建了一个按钮,并定义了缩小、放大和还原按钮大小的动作。然后注册了按钮的触摸事件,当触摸事件类型为 `ccui.TouchEventType.began`(即按下时)时,执行缩小动作,当事件类型为 `ccui.TouchEventType.ended`(即抬起时)时,执行放大动作并在此处添加按钮点击后的逻辑处理,当事件类型为 `ccui.TouchEventType.canceled`(即取消点击时)时,执行还原按钮大小的动作。 需要注意的是,上述代码中使用了 `ccui.Button` 类创建按钮,如果使用的是 `cc.Sprite` 类,则需要使用 `cc.ScaleBy` 函数创建缩放动作。同时,由于 Lua函数名和变量名不区分大小写,因此 `cc.ScaleTo` 函数Lua 中也可以写成 `cc.Scaleto` 或 `cc.scaleTo`。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值