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