支持不同分辨率的android Cocos2d

支持不同分辨率的android Cocos2d,android,cocos2d-android,Android,Cocos2d Android,我正在尝试建立一个游戏,想知道如何才能支持不同的分辨率和屏幕大小。对于sprite的位置,我实现了一个基本函数,它根据一定的比率设置位置,我通过SharedDirectory的winSize方法获得屏幕宽度和高度 但这种方法并没有经过测试,因为我还没有开发出一些东西来根据设备的分辨率计算精灵的比例因子。有人能告诉我一些方法和技巧,通过这些方法和技巧,我可以正确地计算精灵的缩放比例,并建议一个系统,以避免精灵的像素化,如果我应用任何这样的方法 我在谷歌上搜索发现Cocos2d-x支持不同的分辨率和

我正在尝试建立一个游戏,想知道如何才能支持不同的分辨率和屏幕大小。对于sprite的位置,我实现了一个基本函数,它根据一定的比率设置位置,我通过SharedDirectory的winSize方法获得屏幕宽度和高度

但这种方法并没有经过测试,因为我还没有开发出一些东西来根据设备的分辨率计算精灵的比例因子。有人能告诉我一些方法和技巧,通过这些方法和技巧,我可以正确地计算精灵的缩放比例,并建议一个系统,以避免精灵的像素化,如果我应用任何这样的方法

我在谷歌上搜索发现Cocos2d-x支持不同的分辨率和大小,但我只能使用Cocos2d


编辑:我有点困惑,因为这是我的第一场比赛。请指出我可能犯过的任何错误。

好的,我最终做到了这一点,让设备显示像

getResources().getResources().getDisplayMetrics().densityDpi
在此基础上,我将ldpi、mdpi、hdpi和xhdpi的PTM比率分别乘以0.75、1、1.5、2.0

我也相应地改变了精灵的比例。为了定位,我将320X480作为基准,然后将其乘以当前x和y像素与基准像素的比率

编辑:添加一些代码以更好地理解:

public class MainLayer extends CCLayer()
{
CGsize size; //this is where we hold the size of current display
float scaleX,scaleY;//these are the ratios that we need to compute
public MainLayer()
{
  size = CCDirector.sharedDirector().winSize();
  scaleX = size.width/480f;//assuming that all my assets are available for a 320X480(landscape) resolution;
  scaleY = size.height/320f;

  CCSprite somesprite = CCSprite.sprite("some.png");
  //if you want to set scale without maintaining the aspect ratio of Sprite

  somesprite.setScaleX(scaleX);
  somesprite.setScaleY(scaleY);
  //to set position that is same for every resolution
  somesprite.setPosition(80f*scaleX,250f*scaleY);//these positions are according to 320X480 resolution.
  //if you want to maintain the aspect ratio Sprite then instead up above scale like this
  somesprite.setScale(aspect_Scale(somesprite,scaleX,scaleY));

}

public float aspect_Scale(CCSprite sprite, float scaleX , float scaleY)
    {
        float sourcewidth = sprite.getContentSize().width;
        float sourceheight = sprite.getContentSize().height;

        float targetwidth = sourcewidth*scaleX;
        float targetheight = sourceheight*scaleY;
        float scalex = (float)targetwidth/sourcewidth;
        float scaley = (float)targetheight/sourceheight;


        return Math.min(scalex,scaley);
    }
}

嗨,我也在Cocos2d android上工作,我不知道如何在Cocos2d中处理android中的多分辨率,因为我正在游戏中编写,所以xml在CCLayer上不可用,所有图像都来自资产文件夹。你能给我一些简单的想法吗?当我放置所有图像时,如何解决这个问题?请告诉我你必须将所有的图像都放进去仅在资源中的图像,您只需根据屏幕分辨率对其进行缩放。从cocos2d获取winsize,根据答案,我保留了320X480作为基本分辨率,因此我的所有资产都适合320X480,我要做的是获取屏幕宽度与基本分辨率宽度的比率,因此这给了我一个X比例因子。然后我将这个比例应用于每个精灵。希望你能理解。是的,我理解了,但我必须为所有图像大小创建不同的“different”文件夹。另外,如果你要设置位置,并且希望每个分辨率都相同,那么将你的位置乘以你计算的x和y比例因子。什么是somesprite.setPosition(80fscaleX,250fscaleY);?如何计算这些值(80f和250f)?