2017-01-15 2 views
0

Ich baue eine einfache iOS-Gaming-App, wo ich ein paar Objekte auf dem Bildschirm bewegen muss, und diese beweglichen Objekte reagieren auf Swipe-Gesten und ändern ihre Richtung darauf. Ich verwende dafür kein Spritekit oder ein anderes Spielframework und die Art und Weise, wie ich die Objekte verschiebe, ist die Auslösung eines NSTimers, der 60 Mal pro Sekunde ausgelöst wird. Ich verwende keine Threads explizit, also denke ich, dass der Timer vom Hauptthread ausgeführt wird? Der Codeblock, den der Timer auslöst, aktualisiert die Position von Objekten basierend auf ihrer Geschwindigkeit (definiert als Pixel pro Zeiteinheit in x/y-Richtung). Es funktioniert gut und ich bin fast am Ende meines Projekts, aber während ich die App getestet habe, habe ich festgestellt, dass obwohl die Bewegung von Objekten meistens ziemlich gut aussieht, die Bewegung manchmal jedoch ein wenig grob ist. Meine Frage ist, dass es der richtige Weg ist, um so etwas zu tun, wie kann ich die Leistung verbessern? kann etwas wie GCD mit dem Problem der nervösen Bewegung helfen? (Ich habe GCD nicht im Detail untersucht, aber ich bin bereit, Zeit darauf zu verbringen, wenn ich weiß, dass das helfen wird)Mit NSTimer Objekte auf dem Bildschirm bewegen

Danke für jede Hilfe!

+2

Verwenden Sie nicht 'NSTimer'. Verwenden Sie 'SpriteKit' und die von Ihnen verwendete Zeitplanung, oder verwenden Sie' CADisplayLink', wenn Sie etwas anderes verwenden möchten. – EmilioPelaez

+1

Mein erstes Spiel wurde auf NSTimer mit UIImageViews als Sprites gemacht (Explosion der Droiden, wenn du es sehen willst). Es funktioniert in Ordnung, solange Sie nicht zu viele Sprites verwenden. Aber da du gesagt hast, dass dein Spiel ein Leistungsproblem hat, ist es besser, SpriteKit zu verwenden. Meine 2., 3., 4. Spiele verwenden alle SpriteKit und ich garantiere, dass es viel besser und auch nicht schwer zu lernen ist. – GeneCode

+0

Danke! Ich wechsle jetzt zu SpriteKit, scheint bisher ziemlich gut zu sein :) – comatose

Antwort

4

und die Art, wie ich die Objekte bewege ist durch eine NSTimer Auslösung, die 60-mal pro Sekunde

ich würde empfehlen, nicht zu tun, feuert. Verschiedene Formen der Animation sind eingebaut (Animation anschauen, Ebenenanimation, CADisplayLink, UIKit Dynamics), und natürlich gibt es immer Sprite Kit. Verwenden Sie die Werkzeuge, die Sie für diesen Zweck erhalten. Erfinden Sie das Einrad nicht neu, wenn Sie bereits eine Ducati zur Verfügung haben.

Verwandte Themen