滑动精灵时,如果精灵从侧面消失,它会缠绕到另一侧吗?

时间:2011-03-07 19:11:10

标签: objective-c cocos2d-iphone sprite infinite-loop

当滑动精灵时,如果精灵从侧面消失,我想让它环绕到另一侧,但我不知道如何做到这一点同时精灵同时被推离一侧我想要另一个那个你不能看到在对面出现像一个循环某种虫洞的东西。

这是我的代码到目前为止,它崩溃了,只有整个精灵消失了一边才会传输精灵。循环也需要作为无限循环运行,直到有人退出应用程序。

        for (int i =0; i<16; ++i) {
        MyNode *currentSprite = [c1array objectAtIndex:i];
        if (currentSprite.contentSize.height>=320 || currentSprite.position.y-currentSprite.contentSize.height/2<=0 ){
            MyNode *Bsprite = currentSprite;
            MyNode *Tsprite = currentSprite;
            Bsprite.scale = 1.0;
            Tsprite.scale = 1.0;

            if(currentSprite.position.y >=253){
            Bsprite.position = ccp(currentSprite.position.x,-35);
                [self addChild:Bsprite];
                Bsprite.visible = TRUE;
            }
            if (currentSprite.position.y <=0) {
                Tsprite.position = ccp(currentSprite.position.x,324);
                [self addChild:Tsprite];
                Tsprite.visible = TRUE;
            }
            MyNode *isChanging;
            if ((Tsprite.visible == TRUE && currentSprite.visible == TRUE) || (Bsprite.visible == TRUE && currentSprite.visible == TRUE)) {
                isChanging = TRUE;
            }
            if (isChanging == FALSE) {
                [self removeChild:Tsprite cleanup:YES];
                [self removeChild:Bsprite cleanup:YES];
            }
        }
    }

1 个答案:

答案 0 :(得分:2)

一个精灵是不可能的。但你可以有两个精灵。在您的精灵沿屏幕滑动的情况下,只有一个精灵可见。但当它到达边界时,第二个也将可见。当第二个完全进入屏幕时 - 删除(或隐藏)第一个。

实现这一点的最佳方法是创建一个包含第一个和第二个精灵的CCNode子类,并在需要时交换它们。通过这种方式,您的所有逻辑都将非常简单。你将只使用一个CCNode(子类)而不考虑交换sprite - 它将由你的类自动完成

修改

@interface MyNode : CCNode
{
    CCSprite *sprite1;
    CCSprite *sprite2;
    CCSprite *currentSprite;
    bool isChanging; //indicates that now two sprites are visible
}
@end