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中精灵的销毁机制

posted @ 2017-07-05 16:52  履霜坚冰  阅读(601)  评论(0)    收藏  举报