1

Visual Studio 2012を使用したWindows OpenGLシミュレーターのみでの長時間の開発の後、480/320の画面サイズでテストする必要があるように見えました

CCSize screenSize = pEGLView->getFrameSize();
    CCSize designSize = CCSize(320, 480);

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

    if (screenSize.width > 640) {
        CCFileUtils::sharedFileUtils()->addSearchPath("ipadhd");
        pDirector->setContentScaleFactor(1280/designSize.width);
    } else if (screenSize.width > 320) {
        CCFileUtils::sharedFileUtils()->addSearchPath("ipad");
        pDirector->setContentScaleFactor(640/designSize.width);
    } else {
        CCFileUtils::sharedFileUtils()->addSearchPath("iphone");
        pDirector->setContentScaleFactor(320/designSize.width);
    } 

そして、画像をロードするこの関数を使用して

void GameLayer::loadImages()
{
    CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("sprites35.plist");
    m_gameBatchNode  = CCSpriteBatchNode::create("sprites.png",200);
    this->addChild(m_gameBatchNode,2,kSSheet);
    m_background  = CCSprite::create("gride300_300.png");
    m_background->setPosition(ccp(m_winSize.width/2,m_winSize.height/2));  
    this->addChild(m_background,kGrid);

}

私のデバイス (iPhone 5) で最初にアプリを実行したとき、画像のすべてのサイズが 1/3 小さくなり、位置がすべて間違っていました。
私の質問は、オープンGLシミュレーターを使用してWindowsで開発し、iPhone 5
UPDATE
ですべてのものを正しく表示するにはどうすればよいか です。たとえば、サイズが297 x 297ピクセル(1.00)の背景画像があります。それはこのように:

m_background  = CCSprite::create("gride300_300.png");
m_background->setPosition(ccp(m_winSize.width/2,m_winSize.height/2));  
this->addChild(m_background,kGrid);

シミュレーターでは見栄えがします。でもiPhoneで見ると真ん中にあるけどとても小さい。シミュレーターとは違う

2 番目の例:
サイズが 35 x 35 ピクセル (1.00) の丸い宝石を配置し、それぞれを中央に配置します。シミュレーターではすべて見栄えがしますが、iPhone で見ると、再び非常に小さく
整列します。画面の左下に
、gem を配置するコードを次に示します。

void Gem::placeInGride()
{
    CCSpriteBatchNode *spriteBatchNode = (CCSpriteBatchNode*) getGameController()->getGameLayer()->getChildByTag(kSSheet);
    int gemSelect =(rand() % totalGemsAvailable) + 1;

    GemType gemNum;
    gemNum =(GemType)gemSelect;
    setGemState(kGemNew);    
    char spritename[20];    
    sprintf(spritename,"gem%i_tranc.png",gemNum); 
    setImageName(spritename);
    setGemType(gemNum);    
    char spriteid[20];    
    sprintf(spriteid,"gem_%i_%i",getRowNum(),getColNum()); 
    std::string gemid(spriteid);
    setGemId(spriteid);
    mySprite = CCSprite::createWithSpriteFrameName(spritename);
    mySprite->setOpacity(255);
    spriteBatchNode->addChild(mySprite, 2);

    CCSize sSize = mySprite->getContentSize();
    setGemPosition(setPositionForGem(getRowNum(),getColNum(),sSize));

}

CCPoint Gem::setPositionForGem(int row,int col,const CCSize& gemSize)
{

    float leftPadding = 30 ; 
    float rightPadding = 37.5 ;
    float topPadding = 111.5;
    float buttonPadding = 90;
    float gemHight = gemSize.height;
    float gemWidth = gemSize.width;

    float x = (leftPadding+1) + ((gemWidth+2)*(col));
    float y = (topPadding+1)  + ((gemHight+2)*(row/*+1*/));
    return  ccp(x,y) ;

}

iPhone と Windows の両方のスクリーン ショットを添付する

iphone_screen.PNG
windows_screen.jpg

4

1 に答える 1

0

パラメータが後方にあると思います

CCSize designSize = CCSize(320, 480);

する必要があります

CCSize designSize = CCSize(480,320);

また、使用してみましたか

CCSize winSize = CCDirector::sharedDirector()->getWinSize();
デバイスに使用されている実際の画面サイズを確認してから、iphone、ipad、および ipadhd を使用するこの例のように、そこからスケーリングされた画像を提供します。

于 2013-08-09T20:54:50.653 に答える