Я разрабатываю iPhone-игру с использованием COCOS2d Framework и Objective-C (в ландшафтном режиме/режиме просмотра).
В игре я использую Background, который имеет четыре слоя ( "Небо" сверху, "Гора" ниже неба, "Хилл" ниже горы и "Передний край" ниже). Здесь мне нужно переместить каждый слой фона с другой скоростью, так как "Небо" должно двигаться медленнее, чем "Гора" , "Гора" должна двигаться медленнее, чем Хилл, а "Хилл" должен двигаться медленнее, чем "Передний план".
Пока я перемещаю каждый уровень с другой скоростью, игра испытывает BREAK-UP МЕЖДУ СОКРАЩЕНИЕМ СЛОЕВ.
Я попытался разрешить это с помощью логики, например: увеличение размера изображения/слоя (ширины) в соответствии с его скоростью, чтобы каждый слой заканчивался и снова запускался с координацией. Не удалось заставить его работать.
Это мой код для перемещения фона:
-(void) backgroundmoving
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
//return kDevice_iPad;
// Code for Each Layer 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 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);
}
Выше кода дает мне исходную проблему. Предлагаю ссылки на скриншот для справки:
1) http://screencast.com/t/seUjXClz
2) http://screencast.com/t/8tHq2KYnnMa
Любая помощь, направленная мне в правильном направлении, будет с благодарностью.
Спасибо заранее:)