quick-cocos2d-x 切换新场景场景A切换到场景B,释放资源
场景A
创建一个CCNode,然后创建2个精灵加入到CCNode中
切换到B场景,在B场景的onEnter函数中通过函数
来释放A场景中加载的资源,即2张图片精灵
但是并不会释放掉2个精灵的图片
但是如果A场景中的两个精灵不是加到CCNode中,直接加到self中,那么在B场景的onEneter函数中是可以释放掉资源的
请教大家到底在切换场景时,希望通过
CCSpriteFrameCache:sharedSpriteFrameCache():removeUnusedSpriteFrames()
CCTextureCache:sharedTextureCache():removeUnusedTextures()
函数来完全释放上一个场景的资源,请问这两个函数在哪里调用才行呢?
创建一个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方法中延迟调用释放资源的方法。