Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocos2d iphone 是否可以使用iPhone 4/5';s的完全本机分辨率,而不是使用老式iPhone的一半大小坐标_Cocos2d Iphone - Fatal编程技术网

Cocos2d iphone 是否可以使用iPhone 4/5';s的完全本机分辨率,而不是使用老式iPhone的一半大小坐标

Cocos2d iphone 是否可以使用iPhone 4/5';s的完全本机分辨率,而不是使用老式iPhone的一半大小坐标,cocos2d-iphone,Cocos2d Iphone,问题是,Cocos似乎认为视网膜设备的分辨率与标准设备相同。如果你在ipad上画一个7681024的精灵,它会把它放在右上角。如果你在retina ipad上绘制一个7681024的精灵,内容缩放会使其位于右上角。然而,如果你在6401136的视网膜iphone 5上画一个精灵,它不在右上角,它离屏幕的距离是2倍。为了把它放在角落里,你必须画在320568,因为内容缩放 我确实有一个默认值-568h@2x.png图像,我在版本2.1上 我的问题是:有没有办法让Cocos2d制作出来,这样在iPh

问题是,Cocos似乎认为视网膜设备的分辨率与标准设备相同。如果你在ipad上画一个7681024的精灵,它会把它放在右上角。如果你在retina ipad上绘制一个7681024的精灵,内容缩放会使其位于右上角。然而,如果你在6401136的视网膜iphone 5上画一个精灵,它不在右上角,它离屏幕的距离是2倍。为了把它放在角落里,你必须画在320568,因为内容缩放

我确实有一个默认值-568h@2x.png图像,我在版本2.1上

我的问题是:有没有办法让Cocos2d制作出来,这样在iPhone5上以6401136绘制一个精灵就会导致精灵位于右上角

是否可以设置cocos2d自定义GL投影,并将winSizeInPoints设置为等于winSizeInPixels和content scale 1.0,以便您可以使用iPhone 4/5的完整本机分辨率,而不是使用旧版iPhone的一半大小坐标。

您可以通过CCFileUtils使用“-hd”轻松做到这一点。这样,iPad设备将为iPhone加载常规高清资产

关于评论的最新情况:

设备上的位置是以点为单位测量的,而不是以像素为单位。因此,非视网膜iPad和视网膜iPad的点分辨率均为1024x768。这很好,因为它使适应不同像素密度的屏幕变得轻而易举。这也适用于iPhone设备

我的怀疑是,您根本没有添加默认值-568h@2x.png尚未将图像启动到您的项目中,这可能会导致宽屏设备受到不同的对待


特别是在iPhone 5之前的旧版本cocos2d上,有一个bug会将iPhone 5视为非视网膜设备,不管默认图像是否正确。

是的,您可以共享,简单的方法是将所有常见的精灵放在精灵表中,并在运行时检查iPad是否正确,如果正确,则加载iPhone HD表。我们在许多项目中都这样做,并且工作了

if(IS_IPAD)
{
   [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"GameSpriteSheet-hd.plist"];
}
else 
{
    [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"GameSpriteSheet.plist"];

}

对于背景图像,最好有单独的iPad图像,如果缩放效果不错,那么您可以在运行时缩放图像。

据我所知,以下方法应该可行:

  • 设置
    CCDirector
    时,请调用
    [控制器启用显示:否]

  • CCDirector
    中破解或重写以下方法,以便将winSizeInPixels定义为全屏分辨率:

    a<代码>设置内容缩放因子:

    b<代码>重塑项目:

    c<代码>设置视图:

  • 步骤1将确保渲染精灵或进行计算时不会应用缩放因子;步骤2将确保在需要时使用全屏分辨率(例如,定义投影时,但也可能在其他地方)

    关于步骤2,您会注意到,所有列出的方法都显示如下语句:

    winSizeInPixels_ = CGSizeMake( winSizeInPoints_.width * __ccContentScaleFactor, winSizeInPoints_.height * __ccContentScaleFactor );
    
    if (<IPHONE_4INCHES>)
        winSizeInPixels_ = CGSizeMake( winSizeInPoints_.width * 2, winSizeInPoints_.height * 2 );
    else 
        winSizeInPixels_ = CGSizeMake( winSizeInPoints_.width * __ccContentScaleFactor, winSizeInPoints_.height * __ccContentScaleFactor );
    
    \uCCContentScaleFactor
    在步骤1中被设置为等于
    1
    ,您应该保持这样;例如,您可以根据自己的目标定制winSizeInPixels计算,如下所示:

    winSizeInPixels_ = CGSizeMake( winSizeInPoints_.width * __ccContentScaleFactor, winSizeInPoints_.height * __ccContentScaleFactor );
    
    if (<IPHONE_4INCHES>)
        winSizeInPixels_ = CGSizeMake( winSizeInPoints_.width * 2, winSizeInPoints_.height * 2 );
    else 
        winSizeInPixels_ = CGSizeMake( winSizeInPoints_.width * __ccContentScaleFactor, winSizeInPoints_.height * __ccContentScaleFactor );
    
    if()
    winSizeInPixels_u2;=cSizeMake(WinSizeInPixes_2;.width*2,WinSizeInPixes_2;.height*2);
    其他的
    winSizeInPixels=cSizeMake(winSizeInPoints\uUu.width*\uUu ccContentScaleFactor,winSizeInPoints\uUu.height*\uUu ccContentScaleFactor);
    
    不幸的是,定义自定义投影将不起作用,因为winSizeInPixels总是基于
    \uCCContentScaleFactor
    计算的;但是,
    \uuCCContentScaleFactor
    在Cocos2D中的任何地方都可以用来定位/调整精灵等

    关于实现的最后一点说明,您可以将这些更改修改到现有的
    CCDirectorIOS
    类中,或者从中派生出您自己的
    MYCCDirectorIOS
    并覆盖其中的方法


    希望有帮助。

    问题是,Cocos似乎认为视网膜设备的分辨率与标准设备相同。如果你在ipad上画一个7681024的精灵,它会把它放在右上角。如果你在retina ipad上绘制一个7681024的精灵,内容缩放会使其位于右上角。然而,如果你在6401136的视网膜iphone 5上画一个精灵,它不在右上角,它离屏幕的距离是2倍。为了把它放在角落里,您必须在320568处绘制它,因为内容缩放。在标准模式下,winSizeInPoints==winSizeInPixels。在视网膜模式下,它不。。。因此,我需要一种方法来设置cocos投影,使其将视网膜屏幕视为标准屏幕,其大小为x2,因此其分辨率接近ipad。这可能吗?你是说你可以在6401136画一个精灵,然后在iPhone5上查看它,它会在你的右上角?它真的应该是,当然,你必须考虑雪碧的纹理在默认情况下被锚定在中心,在这种情况下,你只能看到精灵的纹理的左下角,你可以试试它,让我知道你的结果,我能做什么来解决我的问题?你试过不启用视网膜显示,即:调用:<代码> [导演EnabeleTeNeDisplay:否]在设置CCDirector时?@patrick:我建议的方法成功了吗?