Hey ladies and gentleman, i seriosly need your help on this really annoying bug in one of my director class files. the scene/file is the game part of the app and is coming up with these following ERROR messages.
Game.lua 202:attempt to call method "insert"(a nil value)
the Error is near the bottom of the page, it is at spawnEnemy, enemyBalloon
i have tried cleaning the memory by canceling timers in the clean function, that did not work :(.
so i am asking for your elp, i am really urgent!, please help me. her is the game file i was talking about. hope you can help!
cheers ,Hazza
module(..., package.seeall) -- Project: sticky balloons -- Description: -- -- Version: 1.0 -- Managed with http://CoronaProjectManager.com -- -- Copyright 2013 Harry Newton. All Rights Reserved. -- local localGroup function clean (event) print("cleaned") end new = function () local widget = require "widget-v1" widget.setTheme("theme\_ios") display.setStatusBar(display.HiddenStatusBar) local physics = require "physics" physics.start();physics.setGravity(0,1) physics.setDrawMode("normal") localGroup = display.newGroup() local ox, oy = math.abs(display.screenOriginX), math.abs(display.screenOriginY) local cw, ch = display.contentWidth, display.contentHeight local stage = display.getCurrentStage() --------------------------------------------------------------------- --FOREGROUND OBJECTS -------------------------------------------------------------------- local background = display.newImage("background.jpg") localGroup:insert(background) local ground = display.newImage("floor.png") physics.addBody(ground,"static") ground.y = 480 localGroup:insert(ground) local turret = display.newImageRect("BalloonTurret.png",134,134) turret.x = 160 turret.y = 420 localGroup:insert(turret) ------------------------------------------------------------- ------------------------------------------------------------- local function buttonHit() director:changeScene("menu", "fade") end local back = widget.newButton {style = "backSmall",label = "back", onRelease = buttonHit} localGroup:insert(back) local projFiring = false local proj local physicsData = (require "Balloon").physicsData(1.0) local function newProj() proj = display.newImage("Balloon.png"); proj.x =160 ; proj.y = 420 - 20 physics.addBody( proj, "dynamic",physicsData:get("balloon") ) proj.gravityScale = -7 projFiring = false proj.isBullet = true proj.isBodyActive = false proj.isVisible = false localGroup:insert(proj) end --collision handler local function projCollide( self,event ) if ( event.phase == "began" ) then --get world coordinates of projectile for joint reference self:removeEventListener( "collision", self ) ; self.collision = nil --delay function to resolve collision local function resolveColl( timerRef ) if ( timerRef.source.action == "makeJoint" ) then local weldJoint = physics.newJoint( "weld", self, event.other, self.x, self.y ) end end --check if velocity of projectile is sufficient to "stick" local vx,vy = self:getLinearVelocity() local dirVel = math.sqrt( (vx\*vx)+(vy\*vy) ) if ( dirVel \> 100 ) then --if sufficient, stop velocity and trigger joint creation self:setLinearVelocity( 0,0 ) local t = timer.performWithDelay( 10, resolveColl, 1 ) ; t.action = "makeJoint" else --if not sufficient, "break" projectile and create new local t = timer.performWithDelay( 10, resolveColl, 1 ) ; t.action = "none" end end end local function touchAction(event) if ( event.phase == "began" and projFiring == false ) then projFiring = true proj.isBodyActive = true proj.isVisible = true local px,py = event.x-proj.x, event.y-proj.y proj:applyLinearImpulse( px/8, py/8, proj.x, proj.y ) proj:applyTorque( 50 ) proj.gravityScale = -7 proj.collision = projCollide ; proj:addEventListener( "collision", proj ) end if (projFiring == true) then newProj() end end newProj() background:addEventListener( "touch", touchAction ) --------------------------------------------------------------------------------------------------------------- --NEED TO PUT LOCAL GROUP AFTER X AND Y COORDINATES, SO I HAVE TO REWRITE THE FUNCTION ---------------------------------------------------------------------------------------------------------------z function spawnEnemy() local enemyBalloon = display.newImage("Balloon.png") physics.addBody(enemyBalloon,"dynamic", physicsData:get("balloon") ) enemyBalloon:setFillColor( 214, 0, 19 ) enemyBalloon:applyTorque( 50 ) enemyBalloon.x = math.random(0,320) enemyBalloon.y = -60 localGroup:insert(enemyBalloon) end local spawnTmr local spawnTime = 5000 local difficultyLevels = 4 --local spawnTimer = timer.performWithDelay(5000,spawnEnemy, 0 )---- THIS IS AN INFINITE LOOP HARRY ,U MUST YOU'SE THIS A LOT local function increaseDifficulty() if spawnTmr ~= nil then timer.cancel(spawnTmr) spawnTmr = nil end spawnTime = spawnTime - 250 -- just to be safe, set this to whatever spawn rate would be the -- fastest, so game never spawns to fast if spawnTime \< 250 then spawnTime = 250 end -- spawn at this rate until this timer is canceled spawnTmr = timer.performWithDelay(spawnTime,spawnEnemy, 0) end -- this timer loops only till spawning at most difficult speed is reached local difficultyTmr = timer.performWithDelay(5000, increaseDifficulty,difficultyLevels ) return localGroup end