Question

Je suis nouveau dans le développement iPhone. J'ai une configuration de boucle de jeu comme suit.

(void)CreateGameTick:(NSTimeInterval) in_time
{
  [NSThread detachNewThreadSelector:@selector(GameTick) toTarget:self withObject:nil];
}

Mon tick / rendu du jeu de base ressemble à ceci

(void)GameTick
{
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

  CGRect wrect = [self bounds];

  while( m_running )
  {
    [self drawRect: wrect];
  }

  [pool release];       
}

Ma fonction de rendu est appelée. Cependant, rien n’est dessiné (j’utilise Core Graphics pour dessiner des lignes sur une UIView dérivée).

Si j'appelle ma mise à jour via une minuterie, tout va bien.

Pouvez-vous me dire pourquoi le rendu échoue lorsque vous utilisez des threads? Et est-il possible de le faire fonctionner via des threads?

Merci Rich

Était-ce utile?

La solution

Vous ne pouvez pas (bien, ne devriez pas) appeler directement -drawRect: Au lieu de cela, utilisez -setNeedsDisplay; votre vue sera ensuite mise à jour la prochaine fois dans la boucle d'événements. Si vous exécutez ceci dans un thread séparé, vous devrez peut-être utiliser performSelectorOnMainThread:.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top