1

我反复从上到下垂直滚动。但是,在 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;
}
4

2 回答 2

1

我会说你的 mBG1 和 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 相同的精灵,添加额外的 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;
}
于 2013-04-11T13:30:32.020 回答
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
于 2013-04-11T14:43:33.580 回答