2016-07-30 5 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 - это hastebin of game.lua, а here - это hastebin класса menu.lua, который переключает сцену из меню в игру.

Я могу сказать, что строка 87 вызывает проблему, и что-то не так с аргументами для newImageRect, но кроме этого я понятия не имею.

Игра проходит и отлично воспроизводится при первом запуске, но попытка повторного воспроизведения вызывает ошибку. Код, который переключает сцену в файле меню, находится в строках 13-17.

Любая помощь приветствуется, извините, если я глупая и пропуская что-то очевидное.
Спасибо!

EDIT: ошибка возникает при попытке удалить сцену game.lua.

+0

Эта ошибка происходит, когда ваше любое значение синтаксиса в нуль в newImageRect.When движении к другой сцене просто позвонить composer.removeHiidden() Можете ли вы опубликовать игру.. lua line 87. – AndroidUser

+0

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

+0

Где создан этот объект. В вашем коде почему вы использовали 1, можете ли вы объяснить. Я не могу получить you.look на синтаксисе display.newImageRect ([parent,] filename, [baseDir,] width, height) – AndroidUser

ответ

1

Вы звоните createAsteroid с timer.performDelay. Таким образом, вам нужно отменить этот таймер, когда игровая сцена будет уничтожена или скрыта.

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

Попробуйте это:

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

Да, спасибо :) @AndroidUser решил это в чате, но спасибо за сообщение: P – Sulphate

 Смежные вопросы

  • Нет связанных вопросов^_^