【发布时间】:2012-04-13 00:50:11
【问题描述】:
我正在开发我的第一个 cocos2d 游戏。它将有一个循环背景,三个不同的层都以不同的速度循环。循环的速度将根据用户输入而改变。
这是我的做法
-(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);
}
}
}
这可行,但有两个问题。首先,它在第二次循环后创建一个间隙,然后间隙保持在那里。另一个问题是背景的不同部分在屏幕向左移动时似乎“摆动”。这会导致单独的精灵有时会重叠一个像素。我不能拥有。我哪里错了?提前致谢!
【问题讨论】:
-
为什么会有第二个 for 循环?通过条件 "sprt.tag == bckgrnd.tag" 的 sprt 不是和你已经拥有的 bckgrnd... 一样吗?
标签: iphone ios background cocos2d-iphone