我正在尝试创建一个相对简单的带有 2D 图形的游戏,但动画有些复杂。我尝试使用基本的核心图形和核心动画库来开发游戏,但游戏对象的动画性能并不令人满意(即抖动/延迟)。
所以,我现在正在研究 Cocos2D,它看起来非常有前途,直到我检查了 iPhone 4 的高分辨率支持。这似乎根本不起作用,但话又说回来,我才刚刚开始调查一下。
文档似乎提到了关于该问题的一件事,因此只需使用 CCDirector 来设置比例因子,可以像这样完成:
if( [[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
[[CCDirector sharedDirector] setContentScaleFactor: [[UIScreen mainScreen] scale] ];
}
但是,这并没有给出我期望的行为。它只是将要使用的像素数量加倍,这意味着我必须在所有代码中考虑“双像素因素”。
在核心图形/动画库中,我们使用的坐标空间不会改变。在幕后,它只是将所有内容加倍以填充 iPhone 4 高分辨率屏幕,并使用可用的 @2x 图像。这实际上效果很好,游戏逻辑不需要考虑设备的分辨率。 Cocos2D 似乎在这方面的实现很糟糕,让我不想登上 Cocos2D 的火车。
我发现了有关该主题的一些其他主题,但没有不涉及解决方法的真正答案。这是修复了吗?是我做错了还是 Cocos2D 根本就没有准备好高分辨率?有没有 Cocos2D 的替代品可以满足我的需求?
最佳答案
很抱歉无耻的 self 推销,但我想这可以帮助你。我最近用 cocos2d 写了两篇关于高分辨率的小博客文章,并将它们放在我们的网站上。
第一个详细介绍了如何启动和运行 cocos2d,包括如何实现常规图像与高分辨率图像的自动加载行为的建议修复。
此外,还有第二篇文章试图详细介绍点和像素之间的差异。 UIKit 完全基于点,这就是为什么您不必重新处理所有坐标。与 UIKit 相比,cocos2d 基于像素工作,因此与分辨率相关。您可以通过一些相当简单的转换为 cocos2d 提供处理点而不是像素的方法。我已将它们实现为 CCDirector 和 CCNode 的类别,以使它们易于使用。显然,这些类别中的方法并不是唯一应该“指向”的方法。例如,在 CCLabel 上指定大小或在 CCMoveBy 上指定任何位置是基于像素的,因此也必须重新设计...
查看博客:http://apptech.next-munich.com/ (我会直接链接到这些文章,但作为新用户,我只能在答案中发布一个链接)。
希望这对您有所帮助并帮助您入门!
关于iphone - Cocos2d-iphone 对 iPhone 4 高分辨率的支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3292051/