2

嗨,我正在创建一个 iphone 游戏

在我的游戏层中,我有两个相同的背景图像,但我希望它们一个接一个。

一旦游戏动物(例如企鹅)穿过第一个背景,我希望第一个背景在第二个背景之后 - 成为一个连续的背景,直到游戏结束。

我已经尝试了一切——for循环、while循环等,但似乎没有任何效果

有谁知道我该怎么做?

感谢您为我提供的任何帮助。

经过多次不同的尝试,这就是我迄今为止所拥有的一切

- (id) init
{
    if((self = [super init]))
    {
        for ( int x = 0; x < 10000000; ++x)
        {
            CCSprite *bg = [CCSprite spriteWithFile:@"level1.png"];
            [bg setPosition:ccp(160,240)];
            ccTexParams params = {GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT};
            [bg.texture setTexParameters:&params];
            [self addChild:bg z:0];

            CCSprite *bg2 = [CCSprite spriteWithFile:@"level1.png"];
            [bg2 setPosition:ccp(320,480)];
            ccTexParams param = {GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT};
            [bg2.texture setTexParameters:&param];
            [self addChild:bg z:0];
        }
4

1 回答 1

0

如果背景相同,您实际上不需要 2 张图像,您只需设置一张的纹理矩形位置,它就会不断移动。如果您在计时器或更新方法中调用 moveBackground,它将不断滚动。

-(void)init
{
    if((self=[super init]))
    {
        background = [CCSprite spriteWithFile:@"background.png"]; 
        ccTexParams params = {GL_LINEAR,GL_LINEAR,GL_REPEAT,GL_REPEAT};
        [background.texture setTexParameters:&params];
        [self addChild:background z:0];
    }
}

-(void)moveBackground
{
    // Scroll background 5 pixels to the left
    int speed = 5;
    background.textureRect = CGRectMake(background.textureRect.origin.x-speed, 
                                        background.textureRect.origin.y, 
                                        background.textureRect.size.width, 
                                        background.textureRect.size.height);
}
于 2012-08-10T19:51:13.350 回答