cocos2d-x + Lua下场景不能使用setOnEnterCallback(func)等函数来设置回调的解决办法

本文介绍了在使用cocos2d-x+Lua时遇到的几个回调函数问题,并提供了解决方案。由于这些回调函数未在lua_cocos2dx_auto.cpp中实现,因此在尝试使用时会出现错误。文中给出了一种替代方案,通过使用registerScriptHandler方法来实现类似的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cocos2d-x + Lua还不完善,使用这几个函数时会报错:

node:setOnEnterCallback(func)
node:setonEnterTransitionDidFinishCallback(func)
node:setOnExitCallback(func)
node:setonExitTransitionDidStartCallback(func)

原因是lua_cocos2dx_auto.cpp里根本就没实现:
lua_cocos2dx_auto.cpp里根本就没实现setOnEnterCallback()等方法

这个问题的典型场景就是一个Scene不知道自己什么时候被加载了、或者被移除了,而这个需求又是特别有用的,比如我们需要场景被显示出来后开始播放动画、场景被移除时停止播放动画。解决办法为使用registerScriptHandler方法,像这样:

local TestScene = class("TestScene", function()
  return cc.Scene:create()
end)

function TestScene.create()
  local scene = TestScene.new()

  scene:registerScriptHandler(function(eventType)
    if eventType == "enterTransitionFinish" then
      -- 场景被加载完成
    elseif eventType == "exitTransitionStart" then
      -- 场景即将被移除
    end
  end)

  return scene
end

不知道为什么cocos2d-x 3.2给回调函数传入的eventType参数不是数字常量,而是字符串,网上其他教程里使用的cc.NODE_ON_ENTER等判断现在是无效的了。我对eventType是字符串的设定觉得有点不可理解,不过是数字常量也好、字符串也好,都无所谓了,能用就行。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值