0
私はかなりLuaを使い始めています。私のコードのある特定のコマンドが私に大きな問題を引き起こしています。Lua:timer.cancel - > 'nil値のインデックスを作成しようとしました'
currentPuddleDelay = timer.performWithDelay(puddleDelay, createPuddle);
Iが示されていますエラーは次のとおりです:
Attempt to index a nil value
File: ?
stack traceback:
?: in function 'cancel'
game.lua:534: in function '?'
?: in function 'dispatchEvent'
?: in function '_saveSceneAndHide'
?: in function 'gotoScene'
game.lua:452: in function '?'
?: in function <?:182>
私はすでに調査したものから、この問題が発生する可能性があります、私はタイマーを解除しようとしてきた
タイマーは関数内にあり、ローカルですが、私のコードのタイマーはグローバルなので、それは問題ではないと思います。プログラムの後半で、その後local function createPuddle()
local function constantDelay()
local puddle = display.newImage(sceneGroup, "images/puddle.png")
puddle.x = puddleLane
puddle.y = -200
physics.addBody(puddle, "dynamic", {density=0, filter=puddleCollisionFilter})
puddle:applyForce(0, puddleSpeed, puddle.x, puddle.y)
sceneGroup:insert(3,puddle)
local function onPuddleCollision(self, event)
if (event.phase == "began") then
print('puddle collision')
puddle:removeSelf()
puddle = nil
composer.gotoScene("menu")
end
end
puddle.collision = onPuddleCollision
puddle:addEventListener("collision")
end
local constantDelayTimer = timer.performWithDelay(puddleDelay/2,constantDelay,1)
currentPuddleDelayHold = timer.performWithDelay(puddleDelay, createPuddle);
end
currentPuddleDelay = timer.performWithDelay(puddleDelay, createPuddle);
そして:任意の助けをいただければ幸いです
timer.cancel(currentPuddleDelay)
は、以下の問題とコードのビットです。
'currentPuddleDelay'の内容を確認しましたか? 'timer.cancel()'が実行されている行からアクセスできることは確かですか?同様の質問を見てください:https://stackoverflow.com/questions/32403817/corona-timer-cancel-returns-attempt-to-index-a-nil-value – Electrix
なぜ 'puddle = nil'を' onPuddleCollision'?これは 'onPuddleCollision'の同じインスタンスが' event.phase == "で2回呼び出され、両方の時間が始まった場合、"無限値のインデックスを作成しようとする "エラーを生成します。 –