我有一个精灵列,因为一个精灵离开屏幕我希望相同的精灵环绕对面,这样两个精灵同时显示,一个屏幕移动,另一个进入屏幕,另一个停止的精灵不再可见。有人告诉我做一个ccnode,在这里做的一切都是我的代码到目前为止,但没有一个工作,所以我想我需要从头开始。 以下是关于此问题的最后一个问题的链接:When sliding sprite, if sprite disappears off the side, it will wrap around to the opposite side?
这是我的代码:
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];
}
}
}
答案 0 :(得分:0)
BSprite和TSprite是指向同一对象(currentSprite)的指针。实际上你需要两个独立的对象,可以通过克隆currentSprite或者以与c1array相同的方式创建另一个数组。