有没有办法检测显示的对象是否被删除?类似的东西:
obj:addEventListeren("before_remove", function(ev)
-- ev.target will be removed soon
end);
答案 0 :(得分:1)
在删除对象之前,是否要检查对象是否存在?然后,您可以使用nil
检查该对象的任何主要属性。如下所示:
local rect = display.newRect(50,50,100,50) -- Creating an object
local function myFunction(e)
if(rect.x~=nil)then -- checking for its presence
print("Object exists. So, remove it...")
rect:removeSelf()
end
end
Runtime:addEventListener("tap",myFunction).
保持编码..............:)
答案 1 :(得分:1)
我已经完成了,但是在Corona SDK内部实现上实现中继,并且可以在不事先通知的情况下停止工作。看起来像这样:
function AddDestructor(obj, func)
obj._isWidget = true;
if (not obj.originalRemove) then
obj.originalRemove = obj.removeSelf or (function() end);
obj.removeSelf = function(self)
for i = 1, #self.D do
self.D[i](self);
end
self:originalRemove();
end
obj.D = {};
end
table.insert(obj.D, func);
end
你可以像这样使用这个代码
local group = displsy.newGroup();
local r = display.newRect(group, 0, 0, 300, 300);
AddDestructor(r, function()
print("Tadaaaa I was called before rect died!");
end);
group:removeSelf();