[英]attempt to call method 'removeSelf' (a nil value)
由于某种原因,即使我检查它是否为nil,也无法删除其组对象
我尝试过的第一件事:
if playGroup~=nil then
playGroup:removeSelf()
end
错误:尝试删除已经从舞台中删除的对象或其父级/祖先组已删除的对象。
我也试过这个:
for k,v in pairs(playGroup) do
if k ~= nil then
k:removeSelf()
end
end
错误:尝试调用方法“ removeSelf”(nil值)
您应该销毁v而不是k:
for k,v in pairs(playGroup) do
if v ~= nil then
v:removeSelf()
end
end
您无需从组中删除对象,Corona会在您删除组时为您完成。 因此,不需要循环(即使在hades2510建议的修复之后)。
您收到的错误“尝试删除已经被删除的对象...”表明playGroup
是常规表而不是显示对象。 在显示对象上调用removeSelf
会删除与电晕相关的条目,从而将该对象保留为常规表。 因此,至少存在以下可能性:
playGroup
作为另一个事件处理程序的一部分,或者 有一两件事你可以做的是设置playGroup = nil
后removeSelf
因此,如果电晕遇到的是if
再次阻止,也不会尝试再次将其删除:
if playGroup ~= nil then
playGroup:removeSelf()
-- now playGroup is plain table
-- dont' want to run this block of code again:
playGroup = nil
end
如果这样做确实可以解决问题,那么仍然有必要确定为什么在从显示组中删除playGroup
之后调用if
块的原因。 在不将playGroup
设置为nil的情况下playGroup
print语句即可playGroup
目的:
if playGroup ~= nil then
print('WARNING: Going to remove play group from display')
playGroup:removeSelf()
print('WARNING: Play group removed from display')
end
一旦知道了原因,就可以添加回playGroup = nil
。
确保已将对象插入表或组中。 如果不将对象插入表或组中并尝试将其删除,则将产生此错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.