我必须使用其他开发人员制作的项目。该项目使用cocos2d v1.0.1。而问题是它不支持Retina显示。当我进入[director enableRetinaDisplay:YES];
方法时,我看到它在行上返回NO:
if (! [openGLView_ respondsToSelector:@selector(setContentScaleFactor:)])
return NO;
所以问题是 - 是否有可能以某种方式使这个版本的cocos2d支持Retina?
编辑:我在iOS 6.1模拟器中运行它。视网膜模拟器。答案 0 :(得分:1)
!
是否定运算符。当且仅当!condition
为假时,condition
才会计算为真。
return NO;
不回复openGLView_
时才会执行 setContentScaleFactor:
行。
UIView的contentScaleFactor
属性在iOS 4.0及更高版本中可用。检查此属性的setter的可用性是检查设备本身是否具有视网膜能力的方法。如果openGLView_
不回复setContentScaleFactor:
,则此设备没有视网膜,这就是CCDirector的enableRetinaDisplay
返回NO的原因。
如果您在设备上运行代码并在此处获得NO,则此设备没有视网膜。如果您在模拟器上运行它,请确保它至少模拟iOS 4.0。要获得视网膜设备模拟器,请在硬件 - >设备菜单中选择任何视网膜配置。
修改:
openGLView_
是否为零?在Objective C中,您可以在nil上调用任何方法,它将不执行任何操作并返回nil(零,NULL,NO)。你必须创建一个EAGLView并在启用视网膜显示之前将其设置为CCDirector的OpenGL视图。