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中精灵的销毁机制
原文链接: https://www.cnblogs.com/ebchange/p/7122278.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/256407

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 上午10:02
下一篇 2023年2月14日 上午10:03

相关推荐