2016-07-30 75 views
0

所以我剛開始學習如何使用Corona SDK來創建遊戲。製作小行星場射擊類遊戲,並在嘗試玩遊戲時遇到此錯誤。「#1到'newImageRect'(代理預期,得到零)」 - Lua,使用Corona SDK

(我知道有這個問題幾乎是一個翻版,但它有0答案,唯一的評論並不適用於我。)

這是完全錯誤+堆棧跟蹤:

19:21:16.393 ERROR: Runtime error 
19:21:16.393 C:\Users\Some User\Documents\Corona Projects\StarExplorer\game.lua:87: bad argument #-1 to 'newImageRect' (Proxy expected, got nil) 
19:21:16.393 stack traceback: 
19:21:16.393 [C]: in function 'newImageRect' 
19:21:16.393 C:\Users\Some User\Documents\Corona Projects\StarExplorer\game.lua:87: in function '_listener' 
19:21:16.393 ?: in function <?:167> 
19:21:16.393 ?: in function <?:169> 

Here是game.lua的加速器,而here是menu.lua類的一個加速器,它將菜單切換到遊戲。

我可以告訴儘可能多的第87行是造成這個問題,newImageRect的參數有問題,但除此之外,我不知道。

遊戲在第一次運行時運行並完美播放,但試圖重播它會導致錯誤。 在菜單文件中切換場景的代碼位於第13-17行。

任何幫助表示讚賞,對不起,如果我是愚蠢的和缺少明顯的東西。
謝謝!

編輯:錯誤是當它試圖刪除game.lua場景造成的。

+0

此錯誤。 lua line 87. – AndroidUser

+0

local newAsteroid = display.newImageRect(mainGroup,objectSheet,1,102,85) - 87行,game.lua – Sulphate

+0

Where創建objectSheet。在你的代碼裏爲什麼你用1,你能解釋一下嗎?我無法得到you.look at語法display.newImageRect([parent,] filename,[baseDir,] width,height) – AndroidUser

回答

1

您正在致電createAsteroid,請撥打timer.performDelay。所以,當遊戲場景被破壞或隱藏時,你需要取消這個計時器。

asteroidSpawnTimer = timer.performWithDelay(asteroidSpawnTime, createAsteroid, 0) 

試試這個:當你的任何語法值是在newImageRect.When招空到另一個場景只是調用composer.removeHiidden()你能後的比賽會發生

function scene:hide(event) 
--[[...]]-- 
if (phase == "will") then 
    timer.cancel(gameLoopTimer) 
    timer.cancel(asteroidSpawnTimer) -- cancel it 
--[[...]]-- 
+0

是的,謝謝:) @AndroidUser在聊天中解決了它,但感謝發佈這個:P – Sulphate

相關問題