quick-cocos2d-x 切换新场景场景A切换到场景B,释放资源   

场景A 
创建一个CCNode,然后创建2个精灵加入到CCNode中

?
1
2
3
4
5
6
7
8
9
10
11
12
localcontainer = display.newNode():addTo(self):pos(display.cx,display.cy)
 
    localbg = display.newSprite( SCENE_BACK ):addTo( container )
    self.bg = bg
 
    bg:setTouchEnabled(true)
    bg:setTouchSwallowEnabled(true)
    bg:addNodeEventListener(cc.NODE_TOUCH_EVENT,function(event) self:onTouch(event)end)
 
 
    self.flagLabel = display.newSprite("image/scene/starttxt.png"):addTo(container)
    self.flagLabel:setPosition(0, -280)


切换到B场景,在B场景的onEnter函数中通过函数
?
1
2
CCSpriteFrameCache:sharedSpriteFrameCache():removeUnusedSpriteFrames()
    CCTextureCache:sharedTextureCache():removeUnusedTextures()


来释放A场景中加载的资源,即2张图片精灵

但是并不会释放掉2个精灵的图片


但是如果A场景中的两个精灵不是加到CCNode中,直接加到self中,那么在B场景的onEneter函数中是可以释放掉资源的

请教大家到底在切换场景时,希望通过
CCSpriteFrameCache:sharedSpriteFrameCache():removeUnusedSpriteFrames()
    CCTextureCache:sharedTextureCache():removeUnusedTextures()
函数来完全释放上一个场景的资源,请问这两个函数在哪里调用才行呢?

在A场景的onExit(),onCleanup()都试过了,不管精灵加入到CCNode,还是self,都无法释放掉资源

首先:removeUnusedTextures 方法的意义 是纹理的引用计数为1的时候才会删除掉,
你可以尝试下在B场景中onEnter方法中延迟调用释放资源的方法。