2013-02-26 92 views
4

我很好奇如何在cocos2d中创建无限背景。例如,让我说我正在建立一个应用程序,其中一个人从左到右运行,我希望他无限运行。那么在那种情况下,我将不得不拥有无尽的背景,这样这个人就可以继续奔跑。我一直在搜寻这个问题,并没有发现任何实际的工作。Cocos2D无限背景图片

任何类型的建议,答案和提示都非常感谢。

由于

+0

阅读此:http://www.learn-cocos2d.com/2012/12/ways-scrolling-cocos2d-explained/ – LearnCocos2D 2013-02-26 21:05:03

回答

5

试试这个:

#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
#define MM_BG_SPEED_DUR  (IS_IPAD ? (6.0f) : (2.0f)) 



-(void)onEnter 
{ 
    [super onEnter]; 
    [self initBackground]; 

    [self schedule: @selector(tick:)]; 
} 


-(void)initBackground 
{ 
    NSString *tex = @"BG/Background.png";//[self getThemeBG]; 

    mBG1 = [CCSprite spriteWithFile:tex]; 
    mBG1.position = ccp(s.width*0.5f,s.height*0.5f); 
    [self addChild:mBG1 z:LAYER_BACKGROUND]; 

    mBG2 = [CCSprite spriteWithFile:tex]; 
    mBG2.position = ccp(s.width+s.width*0.5f,s.height*0.5f); 

    mBG2.flipX = true; 
    [self addChild:mBG2 z:LAYER_BACKGROUND]; 

} 


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

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

    pos1.x -= MM_BG_SPEED_DUR; 
    pos2.x -= MM_BG_SPEED_DUR; 


    if(pos1.x <=-(s.width*0.5f)) 
    { 
     pos1.x = pos2.x + s.width; 
    } 

    if(pos2.x <=-(s.width*0.5f)) 
    { 
     pos2.x = pos1.x + s.width; 
    } 

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

} 

-(void)tick:(ccTime)dt 
{ 
    [self scrollBackground:dt]; 
} 
2

的最简单的方法是将包括无缝啮合在一起的两个背景图像。 (CCSprite可以正常工作)一旦第一个背景完全离开屏幕,您的更新方法就会将其移回第二个背景旁边的屏幕另一侧,并不断移动两个背景图像。为第二个背景重复此过程。

0

尝试this。这很容易实施和运作良好。只需按照阅读我的教程。