我想同时缩放一组约10个精灵。精灵是不同的精灵层,背景透明。
我正在尝试首先将所有精灵预先附加到图层并将参考存储在数组中。之后,当我点击按钮时,我这样做: 对不起,这是Javascript,但在Objective-C中几乎是一样的。
attr.zoomAllVisibleSprites = function() {
for (var i = 0; i < this.SpriteArray.length; i++) {
if (this.SpriteArray[i].isVisible()) {
this.SpriteArray[i].setAnchorPoint(cc.PointMake(0.5,0.5));
this.SpriteArray[i].setScale(2, 2);
}
}
}
执行这个小小的片段需要在我的Android手机上大约2-3秒,这对我的游戏来说太过分了。有没有办法更快地完成它,优化此代码。也许以精灵可以帮助的不同方式分组?
答案 0 :(得分:0)
您可以使用for
- 循环替换所有CCSprit的精灵数组,如下所示:
for(CCSprite *sprite in self.view.subviews){ //or scenes or whatever
if([sprite isMemberOfClass:[CCSprite class]]){
//Do your thing }}
可能没有帮助,但你可以至少抛弃阵列; D
答案 1 :(得分:0)
可能是设备耗尽内存,尝试切换到16位纹理,可以通过在开始时添加此行来完成:
CCTexture2D::setDefaultAlphaPixelFormat(kCCTexture2DPixelFormat_RGBA4444);
此外,您可以在加载新场景之前卸载不需要的纹理,如下所示:
CCSpriteFrameCache::sharedSpriteFrameCache()->removeUnusedSpriteFrames();
CCTextureCache::sharedTextureCache()->removeUnusedTextures();
CCDirector::sharedDirector()->purgeCachedData();
如果这不起作用那么它可能是Open-GL的问题,在这种情况下你应该看看this。它对我来说就像一个魔术。
All the Best ..:)