我有一个精灵,我想用作背景图片(使用cocos2d)。
CCSprite *abc =[CCSprite spriteWithImageNamed:@"background.png"];
abc.position = ccp(self.contentSize.width/2,self.contentSize.height/2);
第一张图片是原创图片,第二张图片是模拟器的截图。图像分辨率为640/1136。我该怎么做才能适应屏幕的所有空间?我怎么找到它?
答案 0 :(得分:1)
您可以使用缩放图像以适应设备高度,或者只使用4英寸iPhone和3.5英寸的单独图像
缩放
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
}
}
答案 1 :(得分:1)
您使用的代码是正确的。
您得到的结果并非您的预期,因为您可能在非Retina屏幕上加载了Retina图像。
点击此处Cocos2d Naming conventions了解详情。
对于您选择太阳的背景图像,我假设您希望它始终位于右上角。 (这对我来说比对中心更有意义。)
现在,实现此目标的优雅解决方案是为您已创建的 4英寸屏幕获取图像,并定义规则以使其左上角始终为在屏幕的左上角。对于 3.5英寸屏幕,这将被剪裁。
现在,首先要将锚点定义为
_background.anchorPoint = ccp(1.0f, 1.0f);
这将告诉Cocos相对于右上角定位背景。
现在你可以继续定位它,使它始终位于屏幕的上角。
background.position = ccp(self.scene.bounds.size.width, self.scene.size.height);
这将是执行此操作的标准和最佳方式。结果和好处:
您还可以在reference中查看positionType
的新CCNode
媒体资源。 CCPositionUnitNormalized
可以帮助您定义一个定位规则,类似于将此位置定位到父容器的100%宽度和100%高度。它会是这样的。
_background.positionType = CCPositionUnitNormalized;
_background.position = ccp (1.0f, 1.0f);
并且如果您更喜欢这种语法,则会得到相同的结果。
答案 2 :(得分:0)
我不确定“自我”是什么引用,但我认为它是一个层。您似乎试图将图像置于屏幕中心,或者您需要根据屏幕的大小来偏移它。如果是这样,您应该获得屏幕尺寸,因为无论屏幕的分辨率如何,您都可以正确放置图像。我正在使用Cocos2d 2.1。
CGSize winSize = [CCDirector sharedDirector].winSize
这是winSize的分数。您还可以以像素为单位获取winSize:
CGSize winSizeInPixels = [CCDirector sharedDirector].winSizeInPixels;
使用最适合您的方法。然后,您可以使用以下内容居中图像,例如:
abc.position = ccp(winSize.width / 2, winSize.height / 2);
无论您是否尝试使图像居中,知道屏幕尺寸将允许您根据该屏幕尺寸放置图像,以使其正确显示。
显然,必须解决图像的大小以及是否填满屏幕的问题。
我希望这会有所帮助。