Cocos2D Director Пауза / Возобновить выпуск - PullRequest
5 голосов
/ 17 декабря 2009

Я пытаюсь воспроизвести анимацию .gif в cocos2D. Для этого я использую библиотеку glgif. Теперь, чтобы отобразить анимацию, я приостанавливаю режиссера, добавляю подпредставление, чтобы показать анимацию, и после завершения анимации я возобновляю режиссера. Тем не менее, я не могу возобновить состояние директора, и это показывает пустым. Поэтому я попробовал это, не останавливая и не возобновляя работу этого директора, но он все еще не работал. Я также пытался отсоединить директора до анимации и добавить его потом, и даже это не сработало.

Так есть ли способ приостановить / приостановить работу директора в приложении и правильно восстановить его обратно?

Спасибо.

Пример кода:

[[Director sharedDirector] pause]; 
[[Director sharedDirector] detach]; 
AppDelegate *del = [[UIApplication sharedApplication] delegate]; 
[del.window addSubview:del.viewController.view]; 
[del.window makeKeyAndVisible]; // this is code to call glgif class and start anim. 
//code to resume the director 
AppDelegate *del = [[UIApplication sharedApplication] delegate]; 
[[Director sharedDirector] resume]; 
[[Director sharedDirector] attachInView:del.window]; 
MScene *m = [MScene node]; 
[[Director sharedDirector] replaceScene:m];

Ответы [ 3 ]

2 голосов
/ 26 апреля 2010

Если это простое наложение, просто сделайте паузу и выполняйте вызовы UIKit напрямую. Как это:

- (void)playerChanged
{
   [[CCDirector sharedDirector] pause];
   UIAlertView *alert = [[[UIAlertView alloc] 
      initWithTitle:NSLocalizedString(@"CHANGEPLAYER", nil) 
      message:nil
      delegate:self 
      cancelButtonTitle:nil 
      otherButtonTitles:NSLocalizedString(@"OK", nil),
      nil
   ] autorelease];
   [alert show];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
   (void)alertView;
   (void)buttonIndex;

   [[CCDirector sharedDirector] resume];
}

Если вы действительно занимаетесь целым окном, то утилизируйте его полностью

[[CCDirector sharedDirector] end];

и повторите инициализацию и вызовите runWithScene, когда вернетесь. Танец отсоединения / прикрепления, кажется, не работает хорошо или последовательно.

0 голосов
/ 06 ноября 2012

Не совсем уверен, может ли это помочь, но стоит упомянуть: метод паузы в CCDirector не останавливает анимацию полностью, а просто замедляет ее. Метод StopAnimation полностью останавливает это. Поэтому, возможно, StopAnimation / startAnimation вместо паузы / возобновления может решить эту проблему.

0 голосов
/ 10 февраля 2010

Возможно, некоторые из ваших ошибок являются результатом прикрепления / отсоединения, показа / скрытия представлений. Я и моя команда вызываем attachInView только один раз на applicationDidFinishLoading, и если мы хотим изменить другие представления поверх Cocos, мы используем sendToBack или bringToFront вызовы в экземпляре окна делегата. Может быть стоит выстрел. Дайте мне знать, если это имеет смысл, или нет, я могу добавить пример кода.

...