【问题标题】:cocos2d 1.1 sprite for retina 4 inch iPhone5cocos2d 1.1 sprite 用于视网膜 4 英寸 iPhone5
【发布时间】:2012-09-24 07:48:18
【问题描述】:

我使用 cocos2d 1.1、xCode 4.5 来开发我的游戏。我想重新编码我的游戏以支持 iPhone 5。但我遇到了问题:cocos2d 1.1 无法检测到视网膜 4 英寸的精灵。

Default-568h@2x.png - 工作正常,但游戏的精灵显示为 *-hd.png。 似乎 cocos2d 1.1 只能检测到 *-hd.png,但是我添加了精灵 *-568h@2x.png。

对不起我的英语。

这个问题的解决方法是在 CCFileUtils.m 文件中,如下 sergio 所写。

我对 +(NSString*) getDoubleResolutionImage:(NSString*)path 方法做了一些小改动

+(NSString*) getDoubleResolutionImage:(NSString*)path
{
#if CC_IS_RETINA_DISPLAY_SUPPORTED

    if( CC_CONTENT_SCALE_FACTOR() == 2 )
    {
        NSString *pathWithoutExtension = [path stringByDeletingPathExtension];
        NSString *name = [pathWithoutExtension lastPathComponent];

        NSString *extension = [path pathExtension];

        if( [extension isEqualToString:@"ccz"] || [extension isEqualToString:@"gz"] )
        {
            extension = [NSString stringWithFormat:@"%@.%@", [pathWithoutExtension pathExtension], extension];
            pathWithoutExtension = [pathWithoutExtension stringByDeletingPathExtension];
        }

        CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height;

        if ([UIScreen mainScreen].scale == 2.f && screenHeight == 568.0f)
        {
            if( [name rangeOfString:CC_RETINA4_DISPLAY_FILENAME_SUFFIX].location != NSNotFound ) {

                CCLOG(@"cocos2d: WARNING Filename(%@) already has the suffix %@. Using it.", name, CC_RETINA4_DISPLAY_FILENAME_SUFFIX);
                return path;
            }

            NSString *retinaName = [pathWithoutExtension stringByAppendingString:CC_RETINA4_DISPLAY_FILENAME_SUFFIX];
            retinaName = [retinaName stringByAppendingPathExtension:extension];

            if( [__localFileManager fileExistsAtPath:retinaName] )
            {   
                return retinaName;
            }
        }

        if( [name rangeOfString:CC_RETINA_DISPLAY_FILENAME_SUFFIX].location != NSNotFound ) {

            CCLOG(@"cocos2d: WARNING Filename(%@) already has the suffix %@. Using it.", name, CC_RETINA_DISPLAY_FILENAME_SUFFIX);
            return path;
        }

        NSString *retinaName = [pathWithoutExtension stringByAppendingString:CC_RETINA_DISPLAY_FILENAME_SUFFIX];
        retinaName = [retinaName stringByAppendingPathExtension:extension];
        if( [__localFileManager fileExistsAtPath:retinaName] )
        {   
            return retinaName;
        }

        CCLOG(@"cocos2d: CCFileUtils: Warning HD file not found: %@", [retinaName lastPathComponent] );

    }

#endif // CC_IS_RETINA_DISPLAY_SUPPORTED

    return path;
}

并添加文件 ccConfig.h

#ifndef CC_RETINA4_DISPLAY_FILENAME_SUFFIX
#define CC_RETINA4_DISPLAY_FILENAME_SUFFIX @"-568h@2x"
#endif

如果有人有通知,请写信

【问题讨论】:

    标签: cocos2d-iphone ios6 sprite iphone-5


    【解决方案1】:

    据我所知,Cocos2D 2.x 对 iPhone 5 -568h@2x 图像没有普遍支持。

    cocos2D 2.1 添加的唯一 iPhone 5 特定支持涉及向 Xcode 模板添加 Default-568h@2x.png 图像。阅读ChangeLog了解详情。

    另一方面,UIKit 也确实不支持“-568h@2x 图像”,所以我认为 cocos2D 不会添加一个。

    在更概念的层面上,我理解支持 iPhone 5 分辨率的一般方法不是在位图级别(即,提供不同缩放的图像),而是在布局级别(即,改变非-图像 UI 元素)。 (如果您考虑一下,我们已经必须为 iPhone 和 iPad 管理 x1 和 x2 图像:这意味着每个图像有 4 个不同的版本;为此添加另一个维度会很疯狂。)

    如果您的应用确实需要使用缩放图像,那么我想您在使用 UIKit 和使用 cocos2D 时都是靠自己的。

    从好的方面来说,如果您查看CCFileUtils.h,您可以轻松更改它以支持-568h@2x。如果您想对此进行讨论,请查看 this blog post,它描述了 iPad 3 的类似变化。它可能会帮助您构建自己的解决方案。

    【讨论】:

      【解决方案2】:

      你可以在 ccConfig.h 文件中更改后缀

      #ifndef CC_RETINA_DISPLAY_FILENAME_SUFFIX
      #define CC_RETINA_DISPLAY_FILENAME_SUFFIX @"-hd"
      #endif
      

      【讨论】:

      • 游戏必须支持 3,5 和 4 英寸的视网膜
      • @AlexanderSharunov,最好的选择是将你的 cocos2D 库更新到 2.0,或者只从 2.0 获取图像加载部分并使用 iPad 3 的 -ipadhd。
      • 项目是否可以自动更新?因为我不知道怎么做。 cocos2D 2.0是否支持*-568h@2x.png?
      • @AlexanderSharunov,这里是迁移到 2.0 的方法,cocos2d-iphone.org/wiki/doku.php/prog_guide:migrate_to_v2.0
      • @AlexanderSharunov,Cocos2D 2.0 仅支持 iOS 4.3 及以上版本。
      猜你喜欢
      • 2013-05-16
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-01
      相关资源
      最近更新 更多