1

所以我现在试图用一个简单的静态背景制作一个游戏,但是当我将它绘制到屏幕上时(没有进行缩放,因为图像的分辨率与屏幕相同)它绘制了底部图像不正确,图像底部的几百个像素在图像下方完全相同。抱歉,这很难解释,但作为新手,我实际上无法发布出问题的图片。

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

    // 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 不支持这么大的精灵图片吗?(分辨率为 800*1280)任何帮助将不胜感激!

因为我现在可以上传图片,所以这里是出现问题的视觉效果:

应该看起来的图像

我的游戏中的问题:

在此处输入图像描述

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

感谢你们提供的任何帮助!

4

3 回答 3

1

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

我遇到了同样的问题,正在寻找解决方法。

编辑

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

于 2012-08-19T19:47:41.017 回答
0

you should try to make one method for adding background,i am doing this this like this way try this hope it will help full for you...here addBackGroundScene is my method and i am adding my background with this method,scrXScaleFactor is maintaining scaling part of my screen try this...

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

    }
于 2012-06-07T07:21:20.510 回答
0

我不确定,因为从你的代码和查看 cocos2d 代码我看不出会发生这种情况的确切原因,但考虑到你在屏幕上的精灵数量,我肯定会采取看看我对这个问题的回答,因为你很可能遇到了 cocos2d 围绕多个精灵的古怪的小渲染错误之一。尝试 spritesheets 不会有什么坏处,这当然是在 cocos 中实际制作 sprites 的正确方法。

此外,绝对要为自己创建一个辅助实用程序来确定设备与原始图像大小相比的缩放比例,与 iphone 不同,android 确实有几乎无限的屏幕分辨率变化,以及简单的一点“加载时缩放” " 如果您想在任何其他设备上使用它,现在的实用程序代码将在未来为您节省大量时间。

于 2012-05-22T15:13:06.500 回答