[英]Attempt to index field 'parent' (a nil value)
I'm having some troubles when I try to reload a scene. 尝试重新加载场景时遇到了一些麻烦。
In my program, users are able to draw a line with their finger (it's an iOS/Android app), and it works pretty good, but, when I try to reload the scene, the console returns 在我的程序中,用户可以用手指画一条线(这是一个iOS / Android应用程序),效果很好,但是当我尝试重新加载场景时,控制台会返回
"Attempt to index field 'parent' (a nil value)" “尝试索引字段“父级”(nil值)”
at line 39 在第39行
The code I've used to perform the "drawline" and the reload (replay in this case) features is 我用来执行“画线”和重新加载(在此情况下为重播)功能的代码是
local lines = {}
local lineGroup = display.newGroup()
local prevX,prevY
local isDrawing = true
local i = 1
local function distanceBetween(x1, y1, x2, y2)
local dist_x = x2 - x1
local dist_y = y2 - y1
local distanceBetween = math.sqrt((dist_x*dist_x) + (dist_y*dist_y))
return distanceBetween
end
local function drawLine(e)
if(e.phase == "began") then
for i = #lines, 1, -1 do
if (lines[i]) then
lines[i].parent:remove(lines[i])
lines[i] = nil
end
end
lines = {}
line_number = 100
prevX = e.x
prevY = e.y
isDrawing = true
elseif(e.phase == "moved") then
local distance = distanceBetween(prevX, prevY, e.x, e.y)
if(isDrawing and distance < 100) then
if(lines[i]) then lineGroup:remove(i) end
lines[i] = display.newLine(prevX, prevY, e.x, e.y)
lines[i]:setColor(255, 255, 0)
lines[i].width = 3
lines[i].myName = "lines"
if(lines[i].y < 400) then
for i = #lines, 1, -1 do
if (lines[i]) then
lines[i].parent:remove(lines[i])
lines[i] = nil
end
end
end
local dist_x = e.x - prevX
local dist_y = e.y - prevY
physics.addBody(lines[i], "static",
{ density = 1, friction = 0.5,
bounce = -0.8, shape = {0, 0, dist_x, dist_y, 0, 0} } )
lineGroup:insert(lines[i])
end
elseif(e.phase == "ended") then
isDrawing = true
end
return lineGroup
end
Runtime:addEventListener("touch",drawLine)
where line 39 is lines[i].parent:remove(lines[i])
其中第39行是lines[i].parent:remove(lines[i])
Any suggestions? 有什么建议么? Thanks! 谢谢! :) :)
** * HERE'S HOW I RESTART MY GAME * ** * ** * ** * ** ** * 这里是我如何重新开始我的游戏 * ** * ** * ** * **
--REPLAY
local replayBTN = display.newImage("immagini/pause.png")
replayBTN.alpha = 1
replayBTN.x = _W/2
replayBTN.y = _H/2
localGroup:insert( replayBTN)
function replay(event)
director:changeScene("game")
return true
end
replayBTN:addEventListener("touch", replay)
If you want, you can just do an additional check: 如果需要,您可以进行其他检查:
if (lines[i]) then
if (lines[i].parent) then
lines[i].parent:remove(lines[i])
end
lines[i] = nil
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.