Bakground以不同速度移动时层间没有协调

NSE*_*ion 13 objective-c cocos2d-iphone

我正在使用COCOS2d Framework和Objective-C开发iPhone游戏(在横向模式/视图中).

对于游戏,我使用的是具有四层的背景(顶部为"天空",天空下方为"山",山下为"山",下方为"前景'极端).在这里,我需要以不同的速度移动背景的每一层,比如'Sky'应该比Mountain慢,'Mountain'应该比Hill慢,而'Hill'应该比前景慢.

当我以不同的速度移动每一层时,游戏在层的协调之间经历了突破.

我尝试用以下逻辑解决这个问题:根据它的速度增加图像/图层(宽度)大小,以便每一层都应该结束并开始协调再次运行.无法让它工作.

这是我移动背景的代码:

 -(void) backgroundmoving
{

 if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
  //return kDevice_iPad;

  // Code for Each Layer's Moving Speed FOR iPad
  bk_f -=1.0;
  bk_f1 -=1.4;
  bk_f2 -=1.8;
  bk_f3 -=2.2;
 } else {

  // Code for Each Layer's Moving Speed FOR iPhone
  bk_f -=0.2;
  bk_f1 -=0.4;
  bk_f2 -=0.6;
  bk_f3 -=0.8;

 }

 if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {

  //return kDevice_iPad;
  if (bk_f <= -920*1.1) {bk_f=0;}
  if (bk_f1 <= -920*1.1) {bk_f1=0;}
  if (bk_f2 <= -920*1.1) {bk_f2=0;}
  if (bk_f3 <= -920*1.1) {bk_f3=0;}
  if (bk_f4 <= +920*1.1) {bk_f4=0;}
  } else {
  if (bk_f <= -480*2) {bk_f=0;}
  if (bk_f1 <= -480*2) {bk_f1=0;}
  if (bk_f2 <= -480*2) {bk_f2=0;}
  if (bk_f3 <= -480*2) {bk_f3=0;}
  if (bk_f4 <= +480*2) {bk_f4=0;}


 }

 _level_bkgrnd.position = ccp(bk_f, 0);
 _level_bkgrnd1.position = ccp(bk_f1, 0);
 _level_bkgrnd2.position = ccp(bk_f2, 0);
 _level_bkgrnd3.position = ccp(bk_f3, 0);

}
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了背景问题.我提供屏幕截图链接供参考:

1)http://screencast.com/t/seUjXClz

2)http://screencast.com/t/8tHq2KYnnMa

任何指导我正确方向的帮助将不胜感激.

提前致谢 :)

aml*_*szk 1

cocos2d 内置了对此的支持,请查看一些使用视差滚动的示例代码。http://www.cocos2d-iphone.org/archives/22