Cocos2d-x3.0如何绑定调用lua回调函数

(假设你已经会使用tolua导出自定义类)

首先,在C++先写一个类,里面包含这么一个函数


void registerScriptFuncHandler(int handler)
{
	return;
}


没错,这个函数什么都不用做。


接着使用 genbinding.py 导出类


你会得到一个不能用的导出函数


int lua_MyClass_MyPrefix_registerScriptFuncHandler(lua_State* tolua_S)


不能用的原因是        ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0);  这一句。tolua抽风把一个函数类型错误地翻译成了整型,所以你在lua调用这个函数地时候会提示类型错误,期待的是一个整型值。


我把修改的正确示范贴出来


int lua_<span style="font-family: Helvetica; font-size: 11px;">MyClass_MyPrefix</span>_<span style="font-family: Arial, Helvetica, sans-serif;">registerScriptFuncHandler</span>(lua_State* tolua_S)
{
    int 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的示例代码,用于实现飞机大战游戏中子弹自动追击敌人的功能。请注意,这只是一个简单的示例,具体实现可能需要根据实际需求进行调整和修改。 ``` -- 定义子弹类 local Bullet = class("Bullet") function Bullet:ctor(startPos, target) self.speed = 500 -- 子弹速度 self.target = target -- 目标敌人 self.sprite = cc.Sprite:create("bullet.png") -- 子弹贴图 self.sprite:setPosition(startPos) -- 初始位置 end function Bullet:update(dt) -- 计算子弹与目标敌人之间的距离和角度 local distance = cc.pGetDistance(self.sprite:getPosition(), self.target:getPosition()) local angle = cc.pToAngleSelf(cc.pSub(self.target:getPosition(), self.sprite:getPosition())) -- 调整子弹的速度和方向,使其朝向敌人 local velocity = cc.pForAngle(angle) self.sprite:setRotation(-cc.radiansToDegrees(angle)) self.sprite:setPosition(cc.pAdd(self.sprite:getPosition(), cc.pMul(velocity, self.speed * dt))) -- 检测子弹与敌人是否相撞 local bulletBox = self.sprite:getBoundingBox() local enemyBox = self.target:getBoundingBox() if cc.rectIntersectsRect(bulletBox, enemyBox) then -- 相撞后的处理 end end -- 创建子弹对象,并加入游戏场景 local function createBullet(startPos, target) local bullet = Bullet.new(startPos, target) local scene = cc.Director:getInstance():getRunningScene() scene:addChild(bullet.sprite) -- 定时器更新子弹位置 local scheduler = cc.Director:getInstance():getScheduler() local updateFunc = function(dt) bullet:update(dt) end bullet.schedulerId = scheduler:scheduleScriptFunc(updateFunc, 0, false) end -- 在合适的时机调用createBullet函数即可 -- startPos表示子弹的初始位置,target表示目标敌人对象 createBullet(startPos, target) ``` 请注意,以上代码仅为示例代码,具体实现可能需要根据实际需求进行调整和修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值