当调用storyboard:purge/removeScene时,“didRemoveListeners”(一个nil值)会出现。如何通过scene.view添加/删除DisplayObject?
2014-7-6 14:47:47
收藏:0
阅读:77
评论:1
我需要帮助我的小项目……
我有一个有两个场景的游戏(菜单和游戏),我无法正确更改场景。我的主要问题是我不能正确地删除所有场景.view DisplayObjects,因为storyboard.purgeScene("game")会生成以下错误:
“didRemoveListeners”(nil值)
这里是我的代码解释:
- 在“菜单场景”中,我调用
storyboard.goToScene("game") - 在“游戏”中的
CreateScene中,我创建了我的DisplayObject并将它们插入到GroupView(scene.view)中 - 在我的代码的更深层次中,我创建了各种物理学的
DisplayObject球,并将它们通过stageGroupView:insert(ball)添加到scene.view中
_stageGroupView_是在“游戏”的CreateScene中分配的一个局部变量,该变量在模块的顶部声明,并分配给display.getCurrentStage()。
- 当我的冲突检测器内满足条件时,我调用goToScene("menu"),如果我理解得正确,这将执行我的“game”场景的exitScene监听器。
- 在“exitScene”内,我删除所有监听器和计时器
- 在“didExitScene”内,我已经试过淨化/删除场景,但是每次都会得到前面提到的运行时错误。
此时,如果我将didExitScene保留为空,则storyboard将完成其工作,但是游戏场景.view不会被擦除。我只想知道一种有效的方法将动态创建的DisplayObject添加到我的scene.view中,并且能够淨化/删除场景而不会有运行时错误。
以下是我代码的一些部分,以便更好地理解:
local function addBall(ball)
stageGroupView:insert(ball)
end
function scene:exitScene( event )
local group = self.view
timer.cancel( spawnTimer )
timer.cancel( gameTimer )
background:removeEventListener( "touch", onTouch )
player:removeEventListener( "touch", onTouch )
player:removeEventListener( "collision", onPlayerCollision )
bottomBorder:removeEventListener( "collision", onBottomBorderCollision )
rightBorder:removeEventListener( "collision", onRightBorderCollision )
end
function scene:didExitScene(event)
--local group = self.view
--group:removeSelf()
storyboard.purgeScene( "game" )
end
正如您所看到的,我甚至尝试了group:removeSelf()来擦除我的场景视图,但效果很差...一旦我退出并重新进入“game”场景,由“menu”goToScene(“game”)触发另一个运行时错误:
在函数'insert'中,将第-2个错误参数(代理)插入“(期望,得到nil):在menu.lua中的“goToScene”函数中的功能“insert”?
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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中获取用户配置主目录的跨平台方法
我请求你在调用游戏场景之前调用
storyboard.removeScene( MenuScene)。不要使用purge scene,因为它不会释放全部内存。确保你所有的显示对象都已插入到self.view中。如果对于purge scene和remove scene有任何疑问,请参考此处 :http://coronalabs.com/blog/2012/07/31/storyboard-scene-purging-vs-removal/。