NSTimer на устройстве медленнее, чем в симуляторе - PullRequest
2 голосов
/ 27 мая 2009

Я новичок в разработке для iPhone. Я использовал [NSTimer scheduledTimerWithTimeInterval:0.01] для игрового цикла. Игра состоит из функции drawscreen, в которой я использую CGContextClipToRect, чтобы обрезать большие изображения для анимации

Но скорость 0,01 секунды работает в симуляторе только не на устройстве. Как я могу преодолеть эту проблему?

Код таймера отображается в контроллере как

(void)viewDidLoad {
    GameView *main = [[GameView alloc] 
    initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 
    main.backgroundColor = [UIColor blackColor]; 
    self.view = main; 
    [main release];    
    self.tim = [NSTimer scheduledTimerWithTimeInterval: 0.01         
    target: self selector: @selector (gameloop:) userInfo: nil repeats: YES]; 
    [super viewDidLoad];
}

Кто-нибудь может мне помочь?

Ответы [ 3 ]

1 голос
/ 28 мая 2009

NSTimer - неподходящий инструмент для этой работы. Он не предназначен для таймера реального времени. У него нет никаких гарантий относительно того, когда он будет срабатывать, и вы можете легко пропустить кадры.

Существует множество хороших рекомендаций о том, как разрабатывать подобные программы на этой теме Обратите особое внимание на ссылки на пример кода Apple.

0 голосов
/ 29 мая 2009

Я имею в виду, например, когда я анимирую кадры, кадры отображаются с правильной скоростью в симуляторе. но в устройстве он показывает очень медленно (FPS), другими словами, мальчик быстро работает в simulator.but в устройство он ходит.

0 голосов
/ 28 мая 2009

Как сказал U62, 100fps не является реалистичным ожиданием, попробуйте запустить его со скоростью 30, может быть, 60 обновлений в секунду и посмотрите, как он работает. Кроме того, если вы пишете игру, которая должна работать с высокой частотой кадров, вам стоит попробовать написать ее в OpenGL.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...