使用 CCCallFunc 解析序列列表的 Cocos 2D
2014-8-6 21:18:8
收藏:0
阅读:68
评论:0
我想执行一系列在不同节点上执行的操作。为此,我希望将每个操作处理为该操作的单独序列和指向控制操作序列的函数的CCCallFunc。
目前,我正在尝试使代码在一个节点上工作,但不幸的是,我一直遇到一个无法解决的错误。
以下是建立序列数组的代码。每次调用moveEast()时,都会向actionArray添加一个新的序列。
actionArray = {}
function moveEast()
local posAction = CCMoveBy:create(0.2, cc.p(-47, 0))
local callback = CCCallFunc:create(handleActions)
actionArray[table.getn(actionArray) + 1] = {posAction, callback}
end
CCCallFunc中的引用函数直接调用,以启动解析序列列表的过程。
actionCounter = 0
handleActions = function ()
if actionCounter < table.getn(actionArray) then
actionCounter = actionCounter + 1
local actionSeq = actionArray[actionCounter]
layerMaze:runAction(actionSeq)
end
end
... 大量的代码 ...
handleActions()
序列中的CCCallFunc有效,并且会调用handleActions(),但是当actionArray中有多个序列时,我会出现以下错误:
cocos2d: [LUA-print] ----------------------------------------
cocos2d: [LUA-print] LUA ERROR: ASSERT FAILED ON LUA EXECUTE: Argument must be non-nil
cocos2d: [LUA-print] stack traceback:
[string "src/main.lua"]:13: in function <[string "src/main.lua"]:10>
[C]: in function 'runAction'
[string "GameScene.lua"]:312: in function <[string "GameScene.lua"]:304>
cocos2d: [LUA-print] ----------------------------------------
在调试器中运行时,我可以看到在通过CCCallFunc调用handleActions()时所有变量都可用。
有人知道出了什么问题吗?
更新1
我正在调试器的交互式控制台中测试通过在handleActions()函数中持有序列的actionSeq变量上调用setTag()函数。
actionArray中的第一个序列可以轻松设置标记,但是第二个序列会返回以下错误:
=>actionSeq:setTag(2)
Execution error 206: [string "debugger"]:0: invalid 'cobj' in function 'lua_cocos2dx_Action_setTag'
从错误消息中,我能了解到它与垃圾回收器或跨线程变量范围有关。我尝试使用collectgarbage('stop')禁用垃圾回收器,但没有影响。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法