Frage

Ich bin neu auf iPhone Entwicklung. Ich habe ein Spiel Schleife wie folgt aufgebaut.

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

Meine Grundspiel tick / render sieht wie folgt aus

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

  CGRect wrect = [self bounds];

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

  [pool release];       
}

Meine Render-Funktion wird aufgerufen. Jedoch wird nichts gezeichnet (I Core Graphics bin mit auf ein paar Zeilen auf einer abgeleiteten UIView ziehen).

Wenn ich meine Update über einen Timer rufe dann ist alles gut und gut.

Können Sie mir sagen, warum das machen, wenn über Gewinde getan nicht funktioniert? Und ist es möglich, sie über ein Gewinde funktionieren?

Danke Rich

War es hilfreich?

Lösung

Sie können nicht (na ja, sollten nicht) -drawRect nennen: direkt. Verwenden Sie stattdessen -setNeedsDisplay; Ihrer Ansicht nach wird dann das nächste Mal durch die Ereignisschleife aktualisiert werden. Wenn Sie diese in einem separaten Thread ausführen, müssen Sie performSelectorOnMainThread verwenden:.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top