2013-04-11 2 views
1

Я сделал вертикальную прокрутку сверху вниз. Но на iPhone5 есть некоторые проблемы с задержкой.Как сделать вертикальную прокрутку iPhone 5 совместимой

Как я могу заставить его работать на 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; 
} 

ответ

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 
+1

Спасибо, что это тоже работает ... Но один из них подходит лучше. Ваш код также помогает. :) – Drake

+0

У вас есть правильное решение ... счастливое кодирование. – Guru

+1

, если вы не используете более старый cocos2d, уже есть -widehd/-iphonehd суффиксы в cocos2d – LearnCocos2D

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; 
} 
+0

Привет, извините за звучание таких immature.I новичок в ИОС игровой (cocos2d). Можете ли вы помочь, какой размер изображения я должен использовать для повторения фона. использовать 3 разных изображения - bg.png, bg @ 2x.png и [email protected] Кто-то сказал, что это может быть и причиной этого – Drake

+0

Я использую то же изображение для mBG1 и mBG2 – Drake

+1

iOS не будет автозагружать bg [email protected] вместо bg.png, если он запущен на iPhone5, вам нужно вручную проверить winSize, если он подходит iPhone5 (win size.height = 568) и загрузить спрайт [email protected] вручную. Надеюсь, что это поможет :) –

Смежные вопросы