4

cocos2d-x を使用して、cocos2d iPhone ゲームを Android に移植しています。現在、画面解像度の問題に直面しています。特定の解像度よりも低いすべての画面でサポートできる高解像度の画像をゲームで使用したいと考えています。

フォーラムで複数解像度のこの素敵なチュートリアルを読みました。それは本当に役に立ちますが、私は自分の解決策を達成していません。Design Resolution と Resource Resolution のリソースの倍率の説明があります。

しかし、私の場合、高さまたは幅のいずれかでスケーリングされます。私の画像の完全なスケーリングではありません。誰かが私のために理由を明確にすることができますか?

4

4 に答える 4

1

AppDelegate.cpp 内

これはランドスケープモード用です

bool AppDelegate::applicationDidFinishLaunching()
{
    // initialize director

    director = CCDirector::sharedDirector();
    EGLView  = CCEGLView::sharedOpenGLView();

    director->setOpenGLView(EGLView);


    CCSize screenSize = EGLView->getFrameSize();
    CCSize designSize = CCSizeMake(800, 480);
    EGLView->setDesignResolutionSize(designSize.width,designSize.height, kResolutionExactFit);


    if(screenSize.height > 480 && screenSize.height < 720 )
    {

        CCSize resourceSize = CCSizeMake(960, 540);
        director->setContentScaleFactor(resourceSize.height/screenSize.height);
        CCLog("Resolution Scale OF Karboon=%f",resourceSize.width/screenSize.width);
    }


    else if (screenSize.height >= 720 && screenSize.height < 800)
    {

        CCSize resourceSize = CCSizeMake(1280, 720);
        director->setContentScaleFactor(resourceSize.height/screenSize.height);
        CCLog("Resolution Scale OF NOTE=%f",resourceSize.width/screenSize.width);

    }

    else if(screenSize.height > 800)
    {
        CCSize resourceSize = CCSizeMake(1920, 1080);
        director->setContentScaleFactor(resourceSize.height/screenSize.height);
        CCLog("Resolution Scale OF Nexus=%f",resourceSize.width/screenSize.width);

    }

    else
    {


     director->setContentScaleFactor(1);
    CCLog("Resolution Scale OF S Advance=%f");

    }

return true;

}
于 2014-01-04T18:16:06.700 に答える
0

「リソース」フォルダーに次のフォルダーを作成するのに役立つコードを次に示します

ipadhd ipad iphone

applicationdidfinishing メソッドの Appdelegate.cpp でこのコードを使用します。

    CCSize screenSize = pEGLView->getFrameSize();
        //set design size for iPad retina
        CCSize designSize = CCSize(2048, 1536);

        CCEGLView::sharedOpenGLView()->setDesignResolutionSize(designSize.width, designSize.height, kResolutionExactFit);

        if (screenSize.height > 768) {
            CCFileUtils::sharedFileUtils()->setResourceDirectory("ipadhd");
        } else if (screenSize.height > 320) {
            CCFileUtils::sharedFileUtils()->setResourceDirectory("ipad");
        } else {
            CCFileUtils::sharedFileUtils()->setResourceDirectory("iphone");
        }
pDirector->setContentScaleFactor(screenSize.height/designSize.height)

これが役立つことを願っています.iphone用の画像をiphoneフォルダーに、ipad画像をipadフォルダーに、hd画像をipadhdフォルダーに入れます。ここで pDirector は CCDirector 変数です。

于 2013-07-31T08:03:20.753 に答える
0

私はこの素敵なチュートリアルに従いましたhttp://www.cocos2d-x.org/projects/cocos2d-x/wiki/Multi_resolution_support

このようにして、私にとってはうまくいきました。高解像度の画像を 1 枚使用しました

AppDelegate.cpp

typedef struct tagResource
{
cocos2d::CCSize size;
char directory[100];
}Resource;

static Resource smallResource  =  { cocos2d::CCSizeMake(320,480),   "iphone" };
static Resource mediumResource =  { cocos2d::CCSizeMake(768,1024),  "ipad"   };
static Resource largeResource  =  { cocos2d::CCSizeMake(1536,2048), "ipadhd" };

static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(640,1024);


CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();

CCSize frameSize = pDirector->getOpenGLView()->getFrameSize();


pEGLView->setDesignResolutionSize( designResolutionSize.width, designResolutionSize.height,  kResolutionExactFit);


if ((frameSize.height > mediumResource.size.height))
{ 
    pDirector->setContentScaleFactor(largeResource.size.height/designResolutionSize.height);


}
// if the frame's height is larger than the height of small resource size, select medium resource.
else if ((frameSize.height > smallResource.size.height)) 

{ 
    pDirector->setContentScaleFactor(mediumResource.size.height/designResolutionSize.height);

}
// if the frame's height is smaller than the height of medium resource size, select small resource.
else
{
    pDirector->setContentScaleFactor(smallResource.size.height/designResolutionSize.height);

}    

CCDirector::sharedDirector()->setContentScaleFactor(1.f); 
于 2013-08-07T07:52:12.757 に答える