清洗场景数据
2013-6-20 18:5:14
收藏:0
阅读:144
评论:3
当我离开游戏场景时,如何从“game.lua”中清除所有对象,所有数据仍然显示在屏幕上,当我回到“game.lua”时如何将它们全部删除并重置到开始位置?
game.lua:
local storyboard = require(“storyboard”)
local scene = storyboard.newScene()
_W = display.contentWidth
_H = display.contentHeight
system.setIdleTimer(false);--防止应用程序被挂起
local physics = require“physics”
physics.start()
clouts = true
score = 0
speeda1 = 100
speedb1 = 150
function scene:createScene(event)
local group = self.view
end
function scene:enterScene(event)
local group = self.view
-开始落区
if clouts then
local badclout1 = {}
local bad1Group = display.newGroup()
local function spawnBC1()
local badclouts1 = display.newImage(“BCloud1.png”)
badclouts1.x = math.random(0,_W)
physics.addBody(badclouts1,“dynamic”,{density =。1,bounce =。1,friction =。2,radius = 45})
badclouts1.name =“BCloud1”
badclouts1.bodyType =“运动学”
badclouts1.isSensor =真
badclouts1.y = math.random(-100,-50)
badclouts1.index =#badclout1 + 1
bad1Group:insert(badclouts1)
badclouts1.rotation = math.random(-10,10)--旋转对象
badclouts1:setLinearVelocity(0,math.random(speeda1,speedb1)) - 下降
badclout1 [badclouts1.index] = badclouts1
tmrSpawn1 = timer.performWithDelay(math.random(spawna,spawnb),spawnBC1)
返回 badclouts1
end
tmrSpawn1 = timer.performWithDelay(math.random(1000,10000),spawnBC1)
局部函数removeBomb()
for i,v in pairs(badclout1)do
if badclout1 [i] .y> 1000 then
badclout1 [i]:removeSelf()
badclout1 [i] = nil
end
end
end
Runtime:addEventListener(“enterFrame”,removeBomb)
end
--结束掉落区
local function speatTimer()
speeda1 = speeda1 + 1
speedb1 = speedb1 + 1
end
local mainTimer = timer.performWithDelay(550,speatTimer,200)
function gameOver()
storyboard.gotoScene(“restart”,“fade”,400)
end
end
function scene:exitScene(event)
local group = self.view
Runtime:removeEventListener(“collision”,onCollision)
Runtime:removeEventListener(“accelerometer”,onTilt)
Runtime:removeEventListener(“enterFrame”,removeBomb)
end
function scene:destroyScene(event)
local group = self.view
end
function scene:overlayEnded(event)
local group = self.view
end
scene:addEventListener(“createScene”,场景)
scene:addEventListener(“enterScene”,场景)
scene:addEventListener(“exitScene”,场景)
scene:addEventListener(“destroyScene”,场景)
scene:addEventListener(“overlayEnded”,场景)
return scene
谢谢,Kevin,
点赞
用户1605727
有两种方法可以重置对象位置和变量数据。
第一种方法是创建一个如下所示的函数:
function resetGame()
--在此处放置初始位置和数据值
end
每当需要重置游戏时,请调用它,但您需要手动编写重置值。
第二种方法是创建一个虚拟场景。 虚拟场景是一个场景,将你重定向回游戏场景,如下所示:
虚拟场景
function scene:createScene( event )
local group = self.view
storyboard.gotoScene( "scenes.Game" ) --scene/Game.lua
end
重置对象和变量的值,但不要忘记在进入虚拟场景时将所有侦听器删除并将其放在exitScene()函数上。
2013-06-21 02:01:27
用户1870706
既然你正在使用 storyboard,为什么不把所有的显示对象插入到组中呢:
group:insert(someobject)
然后让场景管理器为你完成工作。如果不在scene:createScene()中创建场景,则无法进行屏幕转换。如果不把物体放到组中,当场景消失时,它无法为你删除它们。
2013-07-01 01:00:48
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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中获取用户配置主目录的跨平台方法
如果你正在使用故事板并希望重置所有值,你可以在进入另一个场景之前删除当前场景,这样当你再次进入相同场景时,所有内容将被重新创建。
function scene:exitScene( event ) local group = self.view Runtime:removeEventListener( "collision", onCollision ) Runtime:removeEventListener("accelerometer", onTilt) Runtime:removeEventListener("enterFrame", removeBomb) storyboard.removeScene("SCENE TO REMOVE") end或者在你进入场景后执行下面这段代码:
function scene:enterScene( event ) storyboard.removeScene("SCENE TO REMOVE") end这里是有关如何实现的链接。
http://www.coronalabs.com/blog/2012/07/31/storyboard-scene-purging-vs-removal/