Ios cocos2d中精灵位置的问题

Ios cocos2d中精灵位置的问题,ios,cocos2d-iphone,resolution,ccsprite,Ios,Cocos2d Iphone,Resolution,Ccsprite,我有一个精灵,我想用它作为背景图像(使用cocos2d) 第一个图像是原始的,第二个是来自模拟器的屏幕截图。图像分辨率为640/1136。我应该怎么做才能正常适应屏幕的所有空间?我怎样才能找到它 您可以缩放图像以适应设备高度,也可以对4英寸iPhone和3.5英寸iPhone使用单独的图像 用于缩放 abc.scaleY = winSize.height/abc.contentSize.height; 对于特定图像 if(UI_USER_INTERFACE_IDIOM() == UIU

我有一个精灵,我想用它作为背景图像(使用cocos2d)

第一个图像是原始的,第二个是来自模拟器的屏幕截图。图像分辨率为640/1136。我应该怎么做才能正常适应屏幕的所有空间?我怎样才能找到它


您可以缩放图像以适应设备高度,也可以对4英寸iPhone和3.5英寸iPhone使用单独的图像

用于缩放

abc.scaleY = winSize.height/abc.contentSize.height;
对于特定图像

   if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
    {
        if([[UIScreen mainScreen] bounds].size.height == 568)
        {
            // iPhone 5 add different image
        }
        else
        {
            // add 3.5 screen image
        }
    }
我不确定什么是“自我”引用,但我假设它是一个层。看起来您正试图将图像居中显示在屏幕上,或者需要根据屏幕大小对其进行偏移。如果是这样的话,你应该得到屏幕大小,因为无论屏幕分辨率如何,它都能让你正确地放置图像。我正在使用cocos2d2.1

CGSize winSize = [CCDirector sharedDirector].winSize
这是winSize的点数。您还可以获取winSize(像素):

CGSize winSizeInPixels = [CCDirector sharedDirector].winSizeInPixels;
使用最适合你的东西。然后,可以使用以下选项将图像居中,例如:

abc.position = ccp(winSize.width / 2, winSize.height / 2);
无论您是否尝试将图像居中,了解屏幕大小都将允许您基于该屏幕大小放置图像,以使其正确显示

显然,必须解决图像的大小以及它是否填满屏幕的问题


我希望这有帮助

您使用的代码是正确的

你得到的结果不是你期望的,因为你可能在非视网膜屏幕上加载了视网膜图像

查看这里了解更多信息

对于您选择的太阳背景图像,我假设您希望它始终位于右上角。(这对我来说比居中更有意义)

现在,一个优雅的解决方案是为您已经创建的4英寸屏幕获取图像,并定义一个规则,使其左上角始终位于屏幕的左上角。对于3.5英寸屏幕,这将被剪裁

现在,首先要将锚点定义为

_background.anchorPoint = ccp(1.0f, 1.0f);
这将告诉Cocos相对于右上角定位你的背景

现在您可以继续并定位它,使其始终位于屏幕的上角

background.position = ccp(self.scene.bounds.size.width, self.scene.size.height);
这将是实现这一目标的标准和最佳方式。成果和益处:

  • 适用于3.5英寸和4英寸屏幕,无需特定的图像尺寸
  • 简单,没有不必要的代码,尤其是UI\u界面\u习惯用法测试
  • 大多数人都是这样做的
在右上角的另一种定位方式 您还可以在中检查
CCNode
的新
positionType
属性
CCPositionUnitNormalized
可以帮助您定义一个定位规则,类似于将此定位为父容器的100%宽度和100%高度。应该是这样的

_background.positionType = CCPositionUnitNormalized;
_background.position = ccp (1.0f, 1.0f);

如果您喜欢这种语法,则会得到相同的结果。

您使用的是什么版本的cocos2d?如果您使用的是v3,您使用的是SpriteBuilder吗?我使用的是v3???????
_background.positionType = CCPositionUnitNormalized;
_background.position = ccp (1.0f, 1.0f);