如何使垂直滚动iPhone 5兼容

时间:2013-04-11 13:12:39

标签: iphone cocos2d-iphone

我反复从上到下制作垂直滚动。但是,在iPhone5上存在一些滞后问题。

如何让它在iphone 5上顺利运行

以下是代码:

-(void)scrollBackground:(ccTime)dt
{
    CGSize s = [[CCDirector sharedDirector] winSize];

    CGPoint pos1 = mBG1.position;
    CGPoint pos2 = mBG2.position;

    pos1.y -= MM_BG_SPEED_DUR;
    pos2.y -= MM_BG_SPEED_DUR;

    if(pos1.y <=-((s.height*0.5f) ) )
    {
        pos1.y = (pos2.y + mBG2.contentSize.height)  ;
    }

    if(pos2.y <=-((s.height*0.5f) ) )
    {
        pos2.y = (pos1.y + mBG1.contentSize.height) ;
    }

    mBG1.position = pos1;
    mBG2.position = pos2;
}

2 个答案:

答案 0 :(得分:1)

我会说你的mBG1&amp; mBG2(我认为是背景精灵)是iPhone4屏幕的大小。 所以代码行

if(pos1.y <=-((s.height*0.5f) ) )

&安培;

if(pos2.y <=-((s.height*0.5f) ) )

仅启动太晚(屏幕顶部已空)。

您可以添加第三个mBG3以覆盖更多屏幕,为mBG1和mBG2(适合iPhone5屏幕)提供更大的精灵,或将mBG1复制为mBG3,将mBG2复制为mBG4,以增加覆盖屏幕。如果你的mBG1使用与mBG2相同的sprite,添加额外的mBG3就足够了。 最后一个案例的代码。

-(void)scrollBackground:(ccTime)dt
{
    CGSize s = [[CCDirector sharedDirector] winSize];

    CGPoint pos1 = mBG1.position;
    CGPoint pos2 = mBG2.position;
    CGPoint pos3 = mBG3.position;

    pos1.y -= MM_BG_SPEED_DUR;
    pos2.y -= MM_BG_SPEED_DUR;
    pos3.y -= MM_BG_SPEED_DUR;

    if(pos1.y <=-((s.height*0.5f) ) )
    {
        pos1.y = (pos2.y + mBG2.contentSize.height)  ;
    }

    if(pos2.y <=-((s.height*0.5f) ) )
    {
        pos2.y = (pos3.y + mBG1.contentSize.height) ;
    }
    if(pos3.y <=-((s.height*0.5f) ) )
    {
        pos3.y = (pos1.y + mBG3.contentSize.height) ;
    }

    mBG1.position = pos1;
    mBG2.position = pos2;
    mBG3.position = pos3;
}

答案 1 :(得分:0)

Cocos2d 2.0本身不支持iPhone5分辨率。你需要手动处理。

#define IS_IPHONE5 (([[UIScreen mainScreen] bounds].size.height-568)?NO:YES)

#define TEX_GAME_BG   (IS_IPHONE5) ? ( @"bg-whd.png") : ( @"bg.png")

mBG1 = [CCSprite spriteWithFile:TEX_GAME_BG];

将这些图像放在文件夹

bg.png         : 480x320
bg-hd.png      : 960x640
bg-whd.png     : 1136x640
bg-ipad.png    : 1024x768
bg-ipadhd.png  : 2048x1536