Как сделать приложение для iPhone с боковой прокруткой? - PullRequest
0 голосов
/ 20 декабря 2009

Я работаю над приложением iPhone с боковой прокруткой, и у меня есть все ресурсы, кроме самой части с боковой прокруткой! Как мне сделать приложение так, чтобы оно прокручивалось? Чтобы быть более точным, я хочу, чтобы представление приложения прокручивалось, когда UIImageview (игрок) достигает правой / левой границы экрана.

<: РЕДАКТИРОВАТЬ:>
Мне очень жаль все это замешательство! Все, что я делаю, - это ОБРАЗЕЦ приложения для iPhone, который можно использовать только в симуляторе. В приложении у меня есть UIImaageview, который перемещается, когда вы касаетесь стрелки UIImageviews. ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ, ЧТО ВСЯ ИНФОРМАЦИЯ УКАЗАНА, ДО НАСТОЯЩЕГО ПРЕДЛОЖЕНИЯ РАБОТАЕТ ОТЛИЧНО! Теперь моя проблема заключается в том, что я хочу, чтобы UIView прокручивал только ОДНО изображение (это значит, что оно не будет длиться вечно;)). Я пытался использовать UIScrollView, но это не сработало. Наконец, я не планирую использовать Cocos2D или любой другой игровой движок, кроме базового UIview. Это только тестовое приложение, а не кодирование феерии ...

Ответы [ 7 ]

3 голосов
/ 20 декабря 2009

Если вы пишете игру, вы можете воспользоваться многими функциями, предоставляемыми вам такими движками, как Cocos2D .

2 голосов
/ 15 мая 2011

Если изображение с боковой прокруткой велико, я бы предложил прокрутить вид, используя преимущества CATiledLayer. См. Видео WWDC10 Session 104 и пример кода «Tiling».

Кстати, в документах Apple нет ничего, что могло бы предрешать использование представлений прокрутки для служебных программ или меню.

2 голосов
/ 21 декабря 2009

Начните с шаблона приложения на основе представления, чтобы вы могли понять суть, как это работает. Позже вы можете интегрироваться с существующим кодом.

Создание бесшовного фонового изображения 320 x 960 пикселей с именем "seamless.png"

Добавьте этот ivar к вашему контроллеру .h file

UIImageView *bg;

@property (nonatomic, retain) UIImageView *bg;

В вашем файле .m добавьте эти #defines перед строкой @implementation, после @synthesize.

#define kUpdateRate (1.0 / 60.0)
#define kMoveY (3.0)
#define kTopY (0.0)
#define kBottomY (480.0)
@synthesize bg;

Добавить этот метод.

-(void)scrollView; {
 float oldY = self.bg.center.y + kMoveY;
 float newY = oldY;

 if (oldY > kBottomY) {
  newY = kTopY;
  }

 self.bg.center = CGPointMake(self.bg.center.x, newY);
}

Добавьте это в ваш метод viewDidLoad.

 self.bg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"endless.png"]];
 [self.view addSubview:self.bg];
 self.bg.center = CGPointMake(self.bg.center.x, kTopY);

 [NSTimer scheduledTimerWithTimeInterval:kUpdateRate target:self selector:@selector(scrollView) userInfo:nil repeats:YES];

Когда вы запускаете приложение, у вас должен быть красивый фон прокрутки.

Подводя итог, что происходит: таймер настроен на многократный вызов scrollView:

Там изображение перемещается вниз, пока не достигнет предопределенной точки (kBottomY), после чего его позиция поднимается вверх (kTopY) и начинается снова.

Вы можете настроить его, чтобы прокручивать его только тогда, когда вы этого хотите, или прокручивать его самостоятельно, верно?

1 голос
/ 20 декабря 2009

Взгляните на Cocos2D для iPhone, который также включает в себя 2 двигателя столкновения, chipmunk и box2d

Я также могу порекомендовать разработку игры для iPhone из книги oreilly book, которая, если вы новичок в разработке игр, научит вас, как создавать базовые игровые рамки

1 голос
/ 20 декабря 2009

Просто сделайте основной вид шире экрана и измените границы соответствующим образом, чтобы показать другую часть основного вида. Это предполагает, что ваш основной вид имеет ограниченную ширину. Это немного сложнее, если эта точка зрения будет продолжаться вечно. В этом случае вы изменяете границы и рисуете вновь открытое содержание.

Если это не имеет смысла, тогда я думаю, что вам нужно перефразировать ваш вопрос или поэкспериментировать, чтобы сузить то, что вы спрашиваете.

1 голос
/ 20 декабря 2009

Вы должны использовать UIScollView (http://www.iphonedevsdk.com/forum/iphone-sdk-tutorials/3393-uiscrollview-tutorial.html). Или я упускаю суть?

1 голос
/ 20 декабря 2009

Вы пытаетесь использовать UIScrollView? Если это так, просто установите размер содержимого scrollView на что-то шире, чем экран. Например:

self.scrollView.contentSize = CGSizeMake(640, 480);
...