我正在開發我的第一個cocos2d遊戲。它會有一個循環的背景,三個不同的層次,都以不同的速度循環。循環的速度將根據用戶輸入而改變。cocos2d循環背景iPhone
這裏是我正在做這樣
-(void) update: (ccTime) dt
{
for (CCSprite *bckgrnd in backgroundArray){
switch (bckgrnd.tag) {
case 0:
bckgrnd.position = ccp(bckgrnd.position.x - speed * .30, bckgrnd.position.y);
break;
case 1:
bckgrnd.position = ccp(bckgrnd.position.x - speed * .80, bckgrnd.position.y);
break;
case 2:
bckgrnd.position = ccp(bckgrnd.position.x - speed * .50, bckgrnd.position.y);
break;
default:
break;
}
if (bckgrnd.position.x <= -kBacWidth) {
CGPoint greatestPosition = CGPointMake(0, 0);
for (CCSprite *sprt in backgroundArray){
if (sprt.tag == bckgrnd.tag && sprt.position.x > greatestPosition.x) {
greatestPosition = CGPointMake(sprt.position.x, sprt.position.y);
}
}
bckgrnd.position = ccp(greatestPosition.x + kBacWidth, bckgrnd.position.y);
}
}
}
這工作,但有兩個問題。首先它會在第二次循環後創建一個間隙,然後間隙停留在那裏。另一個問題是背景的不同部分似乎在向左移過屏幕時「擺動」。這會導致單獨的子畫面有時可能被像素覆蓋。我不能擁有。我哪裏錯了?提前致謝!
爲什麼你有第二個循環?是不是sprt,通過條件「sprt.tag == bckgrnd.tag」與bckgrnd相同...你已經? – 2012-04-13 15:53:13