据我所知,您正在尝试执行以下操作:
[director enableRetinaDisplay:NO]
设置时调用CCDirector
;
修改或覆盖 's 中的以下方法,CCDirector
以便将 winSizeInPixels 定义为全屏分辨率:
一个。setContentScaleFactor:
;
湾。reshapeProjection:
;
C。setView:
;
第 1 步将确保在渲染精灵或进行计算时不应用缩放因子;第 2 步将确保在需要时使用全屏分辨率(例如,在定义投影时,但也可能在其他地方)。
关于第 2 步,您会注意到所有列出的方法都显示如下语句:
winSizeInPixels_ = CGSizeMake( winSizeInPoints_.width * __ccContentScaleFactor, winSizeInPoints_.height * __ccContentScaleFactor );
__ccContentScaleFactor
等于1
第1步,你应该这样离开它;例如,您可以根据您的目标自定义 winSizeInPixels 计算,如下所示:
if (<IPHONE_4INCHES>)
winSizeInPixels_ = CGSizeMake( winSizeInPoints_.width * 2, winSizeInPoints_.height * 2 );
else
winSizeInPixels_ = CGSizeMake( winSizeInPoints_.width * __ccContentScaleFactor, winSizeInPoints_.height * __ccContentScaleFactor );
不幸的是,定义自定义投影不起作用,因为 winSizeInPixels 总是基于__ccContentScaleFactor
; 但是,__ccContentScaleFactor
在 Cocos2D 中也到处使用来定位/调整 sprite 等。
关于实现的最后一点,您可以将这些更改破解到现有CCDirectorIOS
类中,或者您可以从它自己的类中派生MYCCDirectorIOS
并覆盖那里的方法。
希望能帮助到你。