Cocos2D android背景图片搞砸了

时间:2012-05-15 18:25:41

标签: android ccsprite cocos2d-android

所以即时尝试用简单的静态背景制作游戏,但是当我将它绘制到屏幕上时(由于图像的分辨率与屏幕相同而没有进行缩放),它会绘制底部部分图像不正确,图像的底部几百个像素在图像下方完全相同。对不起,这很难解释,但在这里新来的我实际上无法发布出错的图像。

现在我只是使用一个简单的精灵来渲染这个背景图像。这是使用的代码:

    // background layer: another image
    background = CCSprite.sprite("WaterBackground.png");
    // change the transform anchor point (optional)
    background.setPosition(CGPoint.make(GAME_WIDTH/2, GAME_HEIGHT/2));
    addChild(background);
我在这里做错了吗? Cocos2D不支持sprite这么大的图像吗? (分辨率800 * 1280) 任何帮助将不胜感激!

由于我现在能够上传图像,因此以下是出现问题的视觉效果:

The image as it is supposed to look

我游戏中的问题:

enter image description here

如您所见,问题很难描述。问题只存在于这个较大的图像中;我在GIMP中手动缩小它,然后将其缩放为游戏,它看起来很好(除了分辨率较低)。我也尝试缩小这个较大的图像,这仍然导致了同样的问题。希望你们可以帮助我,因为我不知道什么可能导致这个错误。特别是因为我读到Cocos2D的最大支持图像尺寸是2048 * 2048而且我的图像完全在那之内。

感谢您提供任何帮助!

3 个答案:

答案 0 :(得分:1)

这是由于纹理大小的限制。 Coсos2d-android支持最大尺寸为1024 x 1024像素的图像。

我面临同样的问题,正在寻找解决问题的方法。

修改

我找到了解决方案 在cocos2d项目中,在org.cocos2d.opengl包中打开文件CCTexture2d.java并将kMaxTextureSize从1024更改为2048

答案 1 :(得分:0)

我不确定,因为从您的代码中查看cocos2d代码我无法看到为什么会发生这种情况的明确原因,但鉴于您在屏幕上显示的精灵数量,我会绝对看看我对this问题的回答,因为你很可能会遇到cocos2d围绕多个精灵的一个古怪的小渲染错误。尝试spritesheets是不会伤害的,而且它确实是在cocos中实际做精灵的正确方法。

另外,肯定会创建一个帮助实用程序来确定设备与原始图像大小相比的缩放比例,与iphone不同,android确实具有几乎无限的屏幕分辨率变化,以及简单的“缩放”当你加载“实用程序代码时,如果你想在任何其他设备上使用它,将来会节省很多时间。

答案 2 :(得分:0)

你应该尝试制作一种添加背景的方法,我这样做就像这样尝试这个希望它会对你有所帮助...这里addBackGroundScene是我的方法,我在这个方法中添加我的背景,scrXScaleFactor正在维持我的屏幕缩放部分试试这个...

private void addBackGroundScene() {
        CCSprite bgForLevel1 = addBackgroundAtOrigin("prelevel1/bgMenu.jpg");
        bgForLevel1 .setScaleX(scrXScaleFactor);
            bgForLevel1 .setAnchorPoint(0, 0);          
            addChild(bgForLevel1 );

    }