lua精灵移除报对象非法
function addLeftCard(isVisible) if self.left_CardSprite == nil then self.left_CardSprite = cc.Sprite:create(Resources.IMG_PATH_HEADER.."desk/mj/dun.png") self.left_CardSprite:setPosition(cc.p(0,0)) self.left_CardSprite:setVisible(true) self:addChild(self.left_CardSprite,65) end local leftCard = string.format("%d",self.nRest) if self.m_leftCardLabel ~= nil then self.m_leftCardLabel:removeFromParent() self.m_leftCardLabel = nil end self.m_leftCardLabel=cc.LabelTTF:create(leftCard, Resources.FONT_YAHEI, Resources.FONT_SIZE) self.m_leftCardLabel:setPosition(cc.p(62,25)) self.left_CardSprite:addChild(self.m_leftCardLabel) end function removeLeftCardBg() if self.left_CardSprite ~= nil then if self.m_leftCardLabel ~= nil then self.m_leftCardLabel:removeFromParent() self.m_leftCardLabel = nil end self.left_CardSprite:removeFromParent() self.left_CardSprite = nil end end
1.在removeLeftCardBg函数中移除addLeftCard函数所创建的对象self.left_CardSprite,应该写成上方代码形式,类似于c++中的析构,需要一层一层去删除;
2.如果写成
if self.left_CardSprite ~= nil then
self.left_CardSprite:removeFromParent()
self.left_CardSprite = nil
end
上述形式,认为移除父体,字体会紧跟移除的形式,第一次没问题,当多次执行的时候,会造成移除对象非法的错误
3.欢迎高手据上述指点lua中精灵的销毁机制