众所周知,背包是拿来显示东西的,而在不知道玩家有多少东西的情况下,使用一个滚动层来显示,无疑使最方便的。
那么我在背包上创建一个滚动层,而东西就通过代码来手动创建了!如果在背包里要显示不同类型的东西,那么我切换的时候肯定是先清空滚动层里的东西再创建。
好吧,思路没错。接下来看代码!
this->removeAllChildrenWithCleanup(true);
for(int j=0; j<200; j++)
{
Button* button = Button::create();
button->setTouchEnabled(true);
button->loadTextures(“button.png”,“button_pressed.png”,"");
button->setPosition(Point(600, 100 + j*80));
button->addTouchEventListener(this,toucheventselector(HelloWorld::touchButton));
button->setTag(10+j);
this->addChild(button);
}
this是滚动层!因为玩家点击物品肯定会给玩家一个回馈,所以先创建了几个BUTTON
好吧,看起来没问题!结果我多切换几次后游戏直接挂了。一看内存爆了!
然后有人告诉我说把SpriteFrameCache和TextureCache清空了。这我就无语了!难道我切换一次还得先把资源清空一次再从新加载一次,而且清空和加载的还都是同一个图!那不开玩笑嘛!不说别的,光性能上就不浪费了!
我就很奇怪,难道各位大大们在做背包这样的界面的时候,都是先在编辑器上创建好数量的???

就算我把SpriteFrameCache和TextureCache清空了,其实内存还是在涨,只不过少了一些而已!我发现BUTTON的创建上内存有问题!但却不知道具体哪泄露了!!求高手帮忙解决下!
我用的是2d_x 3.1.1