game.lua:176:bad argument #-1 to 'newRect' (Proxy expected, got nil)

Hi, i have a problem that i can’t  resolve with the “game” scene of my project… can someone help me? The mistake is at the line 176, i think that is a problem with the group “objects” but i don’t know why appears this mistake.

This is the function where the error appear

[lua] function fCounterCO2() --permette al contatore della cO2 di aumentare o diminuire if (dimYCounter1\<100) then --se la dimensione y della barra della CO2 è minore di 100 dimYCounter1=dimYCounter1+0.01 --allora aumenta di un valore x la dimensione y della barra counterCO2 = display.newRect(objects,posXCO2,posYCO2,15,dimYCounter1) ---LINE 176 else if (dimYCounter1\>99) then --se la dimensione y della barra della CO2 è maggiore di 99 composer.gotoScene("gameOver") --allora vai alla schermata "gameOver" end end end [lua]

this is the “game” sccene of my project 

[lua] ----------------------------------------------------------------------------------------- -- -- Eco plague -- game scene -- ----------------------------------------------------------------------------------------- -- Load the composer library local composer = require( "composer" ) -- define a new Scene local scene = composer.newScene() -- ----------------------------------------------------------------------------------- -- Code outside of the scene event functions below will only be executed ONCE unless -- the scene is removed entirely (not recycled) via "composer.removeScene()" -- ----------------------------------------------------------------------------------- -- ----------------------------------------------------------------------------------- -- Scene event functions -- ----------------------------------------------------------------------------------- --------creo i gruppi di visualizzazione-------------- local farBackground=display.newGroup() local nearBackground= display.newGroup() objects = display.newGroup() money= 100000 --variabile globale che inizializza i crediti a disposizione dell'utente ad inizio partita dimYCounter1=70 --variabile globale per la dimensione y del contatore per la barra della CO2 dimYCounter2=10 --variabile globale per la dimensione y del contatore per la barra della green people -- create() function scene:create( event ) local sceneGroup = self.view -- Here we create the graphics element of the game --------------------caricamento sfondo --------------------------------------------- local background = display.newImageRect(farBackground,"GameProgramming/LayerMondo/MARE.png",display.contentWidth,display.contentHeight) ----------------posiziono lo sfondo al centro------------------------- background.x = display.contentCenterX background.y = display.contentCenterY --------------------caricamento e posizionamento sfondo AFRICA --------------------------------------------- local backgroundAfrica= display.newImageRect(nearBackground,"GameProgramming/LayerMondo/AFRICA.png",display.contentWidth,display.contentHeight) backgroundAfrica.x = display.contentCenterX backgroundAfrica.y = display.contentCenterY --------------------caricamento e posizionamento sfondo ANTARTIDE--------------------------------------------- local backgroundAntartide= display.newImageRect(nearBackground,"GameProgramming/LayerMondo/ANTARTIDE.png",display.contentWidth,display.contentHeight) backgroundAntartide.x = display.contentCenterX backgroundAntartide.y = display.contentCenterY --------------------caricamento e posizionamento sfondo ASIA--------------------------------------------- local backgroundAsia = display.newImageRect(nearBackground,"GameProgramming/LayerMondo/ASIA.png",display.contentWidth,display.contentHeight) backgroundAsia.x = display.contentCenterX backgroundAsia.y = display.contentCenterY --------------------caricamento e posizionamento sfondo EUROPA--------------------------------------------- local backgroundEuropa = display.newImageRect(nearBackground,"GameProgramming/LayerMondo/EUROPA.png",display.contentWidth,display.contentHeight) backgroundEuropa.x = display.contentCenterX backgroundEuropa.y = display.contentCenterY --------------------caricamento e posizionamento sfondo GROENLANDIA-------------------------------------------- local backgroundGroenlandia = display.newImageRect(nearBackground,"GameProgramming/LayerMondo/GROENLANDIA.png",display.contentWidth,display.contentHeight) backgroundGroenlandia.x = display.contentCenterX backgroundGroenlandia.y = display.contentCenterY --------------------caricamento e posizionamento sfondo NORD AMERICA--------------------------------------------- local backgroundNordAmerica = display.newImageRect(nearBackground,"GameProgramming/LayerMondo/NORDAMERICA.png",display.contentWidth,display.contentHeight) backgroundNordAmerica.x = display.contentCenterX backgroundNordAmerica.y = display.contentCenterY --------------------caricamento e posizionamento sfondo OCEANIA--------------------------------------------- local backgroundOceania = display.newImageRect(nearBackground,"GameProgramming/LayerMondo/OCEANIA.png",display.contentWidth,display.contentHeight) backgroundOceania.x = display.contentCenterX backgroundOceania.y = display.contentCenterY --------------------caricamento e posizionamento sfondo SUD AMERICA--------------------------------------------- local backgroundSudAmerica = display.newImageRect(nearBackground,"GameProgramming/LayerMondo/SUDAMERICA.png",display.contentWidth,display.contentHeight) backgroundSudAmerica.x = display.contentCenterX backgroundSudAmerica.y = display.contentCenterY -------------------------ContatoreCO2EMPTY------------------------------------------- --inserimento local counter1Empty= display.newImageRect(objects,"GameProgramming/Interface/Fiala\_CO2\_Empty.png",display.contentWidth,display.contentHeight) --posizionamento counter1Empty.x = (display.contentWidth \* 94.7)/100 counter1Empty.y = (display.contentHeight \* 56)/100 --dimensionamento counter1Empty.width=150 counter1Empty.height=150 -------------------------inserimento ContatoreCO2 (barra)------------------------------------------- posXCO2 = (display.contentWidth \* 97)/100 posYCO2 = (display.contentHeight \* 50)/100 counterCO2 = display.newRect(objects,posXCO2,posYCO2,15,dimYCounter1) -------------------------ContatoreGreenPeopleEmpty------------------------------------------- --inserimento local counter2Empty= display.newImageRect(objects,"GameProgramming/Interface/Fiala\_Green\_Empty.png",display.contentWidth,display.contentHeight) --posizionamento counter2Empty.x = (display.contentWidth \* 92.7)/100 counter2Empty.y = (display.contentHeight \* 44)/100 --dimensionamento counter2Empty.width=150 counter2Empty.height=150 --[[------------------caricamento e posizionamento barra blu per scorrimento immagine--------------------------------------------- local barraBlu1 = display.newImageRect(nearBackground,"GameProgramming/LayerMondo/barraNera.png",display.contentWidth,display.contentHeight) barraBlu1.x = (display.contentWidth\*92.7)/100 barraBlu1.y = (display.contentHeight\*50)/100 barraBlu1.width=25 barraBlu1.height=50]]-- ---------------------inserimento contatore green people (barra)----------------------------------- posXGP= (display.contentWidth \* 94)/100 posYGP= (display.contentHeight \* 50)/100 counterGreen = display.newRect(objects,posXGP,posYGP,15, dimYCounter2) -------------------------Bottone Albero Potenziamenti------------------------------------ --posizionamento posX = (display.contentWidth \* 10)/100 posY = (display.contentHeight \* 85)/100 --inserimento bottoneAlbero = display.newCircle(objects,posX,posY,40) -------------------------Bottone Albero Potenziamenti passivo 2------------------------------------ --posizionamento posX = (display.contentWidth \* 10)/100 posY = (display.contentHeight \* 65)/100 --inserimento bottoneAlberoPassivo = display.newCircle(objects,posX,posY,40) -------------------------Bottone Settings------------------------------------------------ --posizionamento posX = (display.contentWidth \* 8)/100 posY = (display.contentHeight \* 10)/100 --inserimento bottoneSetting = display.newImageRect(objects,"GameProgramming/Interface/INT\_settings\_wheel.png",display.contentWidth,display.contentHeight) -------------------------Contatore soldi------------------------------------------------ --[[moneyCounter =display.newText({text="Money "..tostring(money),font="Arial",fontSize="24"}) moneyCounter.x = (display.contentWidth \* 85)/100 moneyCounter.y= (display.contentHeight \* 10)/100]]-- sceneGroup:insert(farBackground) sceneGroup:insert(nearBackground) sceneGroup:insert(objects) end local function openTree() -- permette di andare alla scena 'tree' composer.gotoScene("tree") return true end local function openpassiveTree() -- permette di andare alla scena 'passiveTree' composer.gotoScene("tree2") return true end local function impostazioni() -- permette di andare alla scena 'settings' display.remove(moneyCounter) composer.gotoScene("settingsGame") return true end local function gameOver() -- permette di andare alla scena 'game Over' display.remove(moneyCounter) composer.gotoScene("gameOver") return true end function fCounterCO2() --permette al contatore della cO2 di aumentare o diminuire if (dimYCounter1\<100) then --se la dimensione y della barra della CO2 è minore di 100 dimYCounter1=dimYCounter1+0.01 --allora aumenta di un valore x la dimensione y della barra counterCO2 = display.newRect(objects,posXCO2,posYCO2,15,dimYCounter1) ---LINE 176 else if (dimYCounter1\>99) then --se la dimensione y della barra della CO2 è maggiore di 99 composer.gotoScene("gameOver") --allora vai alla schermata "gameOver" end end end function fCounterGreenPeople() --permette al contatore della green people di aumentare o diminuire if (dimYCounter2\<100) then --se la dimensione y della barra della green people è minore di 100 dimYCounter2 = dimYCounter2+0.01 --allora aumenta di un valore x la dimensione y della barra counterGreen = display.newRect(objects,posXGP,posYGP,15,dimYCounter2) --visualizzazione su schermo dell'aumento della grandezza della barra else if (dimYCounter2\>99) then --se la dimensione y della barra della CO2 è maggiore di 99 composer.gotoScene("gameOver") --allora vai alla schermata "gameOver" end end end local function moneyGrow () --questa funzione permette al contatore dei crediti dell'utente di aumentare --[[local money=100000 local moneyCounter =display.newText({text="Money "..tostring(money),font="Arial",fontSize="24"}) moneyCounter.x = (display.contentWidth \* 85)/100 moneyCounter.y= (display.contentHeight \* 10)/100]]-- display.remove(moneyCounter) --viene rimosso il primo oggetto moneyCounter visualizzato su schermo a inizio partita if(money\<600000) then -- se i crediti sono meno di 600mila.. money = tonumber(money) --trasformo nuovamente la variabile money in un numero money= money+1 -- la incremento di un valore x display.remove(moneyCounter) -- rimuovo il contatore col "vecchio" valore moneyCounter =display.newText({text="Money "..tostring(money),font="Arial",fontSize="24"}) --e visualizzo il nuovo valore incrementato moneyCounter.x = (display.contentWidth \* 85)/100 --posizione x del contatore dei crediti moneyCounter.y= (display.contentHeight \* 10)/100 --posizione y del contatore dei crediti elseif (money\>599000) then --se i crediti sono maggiori di 599mila... composer.gotoScene("tree") --vai alla scena "tree" in modo da costringere l'utente ad un acquisto end end -- show() function scene:show( event ) local sceneGroup = self.view local phase = event.phase if ( phase == "will" ) then --------------posiziono il pulsante dell'albero dei potenziamenti------------------ posX = (display.contentWidth \* 10)/100 posY = (display.contentHeight \* 85)/100 -------------------posiziono il pulsante dell'albero dei potenziamenti passivo ------------------------ posX = (display.contentWidth \* 10)/100 posY = (display.contentHeight \* 65)/10 -------------------------posiziono il Bottone Settings------------------------------------------------ bottoneSetting.x = (display.contentWidth \* 8)/100 bottoneSetting.y = (display.contentHeight \* 10)/100 bottoneSetting.width=32 bottoneSetting.height=32 ------------------------posiziono la barra del cO2----------------------------------------- posX = (display.contentWidth \* 97)/100 posY = (display.contentHeight \* 50)/100 ------------------posiziono la barra della green people---------------------------------------- posX = (display.contentWidth \* 94)/100 posY = (display.contentHeight \* 50)/100 elseif ( phase == "did" ) then ------------aggiungo i vari listeners------------ bottoneAlbero:addEventListener("tap",openTree) bottoneAlberoPassivo:addEventListener( "tap",openpassiveTree ) bottoneSetting:addEventListener("tap", impostazioni) Runtime:addEventListener( "enterFrame" , fCounterCO2) Runtime:addEventListener( "enterFrame" , fCounterGreenPeople) Runtime:addEventListener( "enterFrame" , moneyGrow) end end -- hide() function scene:hide( event ) local sceneGroup = self.view local phase = event.phase if ( phase == "will" ) then -------------rimuovo i listeners----------------- bottoneAlbero:removeEventListener("tap",openTree) bottoneAlberoPassivo:removeEventListener( "tap",openpassiveTree ) bottoneSetting:removeEventListener("tap", impostazioni) Runtime:removeEventListener( "enterFrame" , fCounterCO2) Runtime:removeEventListener( "enterFrame" , fCounterGreenPeople) Runtime:removeEventListener( "enterFrame" , moneyGrow) elseif ( phase == "did" ) then end end -- destroy() function scene:destroy( event ) local sceneGroup = self.view -- Code here runs prior to the removal of scene's view end -- ----------------------------------------------------------------------------------- -- Scene event function listeners -- ----------------------------------------------------------------------------------- scene:addEventListener( "create", scene ) scene:addEventListener( "show", scene ) scene:addEventListener( "hide", scene ) scene:addEventListener( "destroy", scene ) -- ----------------------------------------------------------------------------------- tempo = timer.performWithDelay(10000,gameOver,0) return scene [/lua]
  1. Welcome to the forums,

  2. Please use the code formatting tool when posting code, i.e. the <> button.

  3. Please include the line numbers if you refer to a specific line of code, because no one is going to count to line 176 to find what line you are talking about.

  4. Please narrow down on your problem. You’ve posted your entire scene, but surely the problem doesn’t require all that code to figure it out?

  5. Consider reading: https://forums.coronalabs.com/topic/55780-ask-a-better-question-get-a-better-answer/

The error is most likely related to assigning two newRect’s to the same global counterCO2.

There seem to be a number of other issues with scope. I would suggest using local variables

where possible.

I had that error to, but I just removed first argument(parent(group))

Look at this line

[lua]

money= 100000 --variabile globale che inizializza i crediti a disposizione dell’utente ad inizio partita

[/lua]

Notice that everything after the " ’ " in dell’utente is put in string format.  The area of effected code contains dozens of lines including your function.  Try fixing this error and see if it helps.

***nevermind, that’s just the way your code was formatted above.  In my editor it’s fine.