The Error
18:00:18.870 ERROR: Runtime error
18:00:18.870 level1.lua:192: attempt to call method ‘insert’ (a nil value)
18:00:18.870 stack traceback:
18:00:18.870 level1.lua:192: in function ‘_listener’
18:00:18.870 ?: in function <?:167>
18:00:18.870 ?: in function <?:169>
lines in error are thoes that create staff (new object)
Ok so i got menu.lua i which i got removeScene()
local function onPlayBtnRelease() -- go to level1.lua scene composer.removeScene("level1") composer.gotoScene( "level1", "fade", 500 ) return true -- indicates successful touch end
then i got level1.lua. My main game
1st i create stuff and add too scene group.
function scene:create( event ) local sceneGroup = self.view -- Start the physics engine local physics = require( "physics" ) physics.start() -- Calculate half the screen width and height halfW = display.contentWidth\*0.5 halfH = display.contentHeight\*0.5 -- Set the background local bkg = display.newImage(sceneGroup,"night\_sky.png", halfW, halfH ) -- Score score = 0 live = 3 local Wynik = display.newText(sceneGroup,"Score: ",halfW,10 ) Wynik.x = 30 Wynik.y = 5 local scoreText = display.newText(sceneGroup,score,0,10 ) scoreText:setFillColor( 20, 10, 0 ) scoreText.x = 60 scoreText.y = 5 local liveText = display.newText(sceneGroup,live,halfW,10 ) liveText:setFillColor( 20, 10, 0 ) liveText.x = 280 liveText.y = 5 local zycia = display.newText(sceneGroup,"Lives:",halfW,10 ) zycia.x = 255 zycia.y = 5
got my gameover (too nexr scene)
local function gameOver() composer.gotoScene("menu","fade",500) end
Object creation stuff:
local function addNewObject() local startX = math.random(display.contentWidth\*0.1,display.contentWidth\*0.9) local a = math.random(1,12) if(a\<=5)then local rock = display.newImage("rock.png", startX, -300) physics.addBody( rock ) rock.enterFrame = offscreen Runtime:addEventListener( "enterFrame", rock ) rock:addEventListener( "touch", rockTouched ) sceneGroup:insert(rock) elseif(a==12)then local b=math.random(1,5) if (b==1) then g="bad-blue.png" elseif(b==2)then g="bad-green.png" elseif(b==3)then g="bad-purple.png" elseif(b==4)then g="bad-red.png" else g="bad-yellow.png" end local badjelly = display.newImage(g, startX, -300) physics.addBody( badjelly ) badjelly.enterFrame = offscreen Runtime:addEventListener( "enterFrame", badjelly ) badjelly:addEventListener( "touch", badJellyTouched ) sceneGroup:insert(badjelly) elseif(a==10)then local jar = display.newImage("jar.png", startX, -300) physics.addBody( jar ) jar.enterFrame = offscreen Runtime:addEventListener( "enterFrame", jar ) jar:addEventListener( "touch", jarTouched ) sceneGroup:insert(jar) elseif(a==11)then local powerJelly = display.newImage("Power Jelly.png", startX, -300) physics.addBody( powerJelly ) powerJelly.enterFrame = offscreen Runtime:addEventListener( "enterFrame", powerJelly ) powerJelly:addEventListener( "touch", superJellyTouched ) sceneGroup:insert(powerJelly) else local b=math.random(1,5) if (b==1) then g="jelly-blue.png" elseif(b==2)then g="jelly-green.png" elseif(b==3)then g="jelly-purple.png" elseif(b==4)then g="jelly-red.png" else g="jelly-yellow.png" end local jelly = display.newImage(g, startX, -300) physics.addBody( jelly ) jelly.enterFrame = jellyoffscreen Runtime:addEventListener( "enterFrame", jelly ) jelly:addEventListener( "touch", jellyTouched ) sceneGroup:insert(jelly) end end -- Keep adding a new balloon or bomb every 0.5 seconds local f = timer.performWithDelay( 500, addNewObject, 0 )
and some touch events
local function jellyTouched(event) if ( event.phase == "began" ) then Runtime:removeEventListener( "enterFrame", event.self ) event.target:removeSelf() score = score + 1 scoreText.text = score end end local function rockTouched(event) if ( event.phase == "began" ) then Runtime:removeEventListener( "enterFrame", event.self ) event.target:removeSelf() if(live==0)then gameOver() else live = live-1 liveText.text = live end end end local function badJellyTouched(event) if ( event.phase == "began" ) then Runtime:removeEventListener( "enterFrame", event.self ) event.target:removeSelf() score = 0 scoreText.text = score if(live==0)then gameOver() else live = live-1 liveText.text = live end end end local function superJellyTouched(event) if ( event.phase == "began" ) then Runtime:removeEventListener( "enterFrame", event.self ) event.target:removeSelf() score = score\*2 scoreText.text = score end end local function jarTouched(event) if ( event.phase == "began" ) then Runtime:removeEventListener( "enterFrame", event.self ) event.target:removeSelf() if(live\<3)then live = live+1 liveText.text = live end end end -- Delete objects which has fallen off the bottom of the screen local function offscreen(self, event) if(self.y == nil) then return end if(self.y \> display.contentHeight + 20) then Runtime:removeEventListener( "enterFrame", self ) self:removeSelf() end end local function jellyoffscreen(self, event) if(self.y == nil) then return end if(self.y \> display.contentHeight + 20) then if(live==0)then gameOver() else live = live-1 liveText.text = live end Runtime:removeEventListener( "enterFrame", self ) self:removeSelf() end end