每当我使用
sprite = [CCSprite spriteWithFile:@"image.png"];
Cocos2d 一直很聪明,可以在非 Retina 设备上查找“image.png”,在 Retina 设备上查找“image@2x.png”。
但是每当我尝试动态构建精灵文件名字符串时,即
int random = arc4random() % 2;
switch (random) {
case 0:
color = @"blue";
break;
case 1:
color = @"green";
break;
default:
break;
}
filename = [[NSString alloc] initWithString:color];
filename = [filename stringByAppendingString:@"Square.png"];
// Sprite should now be either "greenSquare.png" or "blueSquare.png"
sprite = [CCSprite spriteWithFile:filename];
突然之间,我的@2x 文件被完全忽略了——而 cocos2d 只寻找 === "greenSquare.png" 即 "greenSquare@2x.png" 从未被拾取的文件,如果 "greenSquare.png" " 不存在(我当时只测试视网膜显示器)整个应用程序崩溃。
知道为什么会发生这种情况以及我能做些什么来解决这个问题吗?
(理想情况下,不必手动检查设备视网膜状态,然后手动附加@2x - 因为我知道这是一个可能的解决方案,它看起来不像是正确的)。
谢谢!