1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

iPhone SDK - Animationsschleife

Dieses Thema im Forum "iOS-Developer" wurde erstellt von planetenring, 04.04.09.

  1. planetenring

    planetenring Empire

    Dabei seit:
    19.09.07
    Beiträge:
    88
    Hallo zusammen

    Habe folgendes Problem:

    Habe eine Animation programmiert, welche jedes Mal, wenn der Button gedrückt wird, zufällige X und Y Koordinaten erzeugt und dadurch die Grafik (in diesem Fall einen blauen Punkt) an einen beliebigen Punkt auf dem iPhone Bildschirm fahren lässt.

    Nun suche ich eine Möglichkeit dies über eine While Scheife oder Ähnliches ablaufen zu lassen. Sprich der Button wird gedrückt und der Punkt fährt so lange willkürliche Punkte an, bis ein STOP Signal kommt.

    Die While Schleife wird in meinem Programm auch durchlaufen, jedoch gewegt sich der Punkt nicht. Es scheint, als ob die Schleife so schnell gerechnet wird, dass Core Animation nicht mehr mitkommt.

    Hat jemand eine Lösung dafür bzw. soetwas selbst schon programmiert?

    Danke im Vorraus von einem verzweifelten iPhone Programmierer
     
  2. The-Kenny

    The-Kenny Transparent von Croncels

    Dabei seit:
    22.05.08
    Beiträge:
    307
    Ohne zu wissen wie genau das gemacht wurde ist es natürlich etwas schwer.

    Aber du kannst z.B. ein Delegate benutzen, was die Methode implementiert, die aufgerufen wird wenn eine CoreAnimation-Animation abgelaufen ist. Ich kenne zwar den Namen nicht auswendig, aber es gibt eine, da bin ich sicher.

    Sobald die Animation abgelaufen ist, stößt du in dem Delegate einfach die nächste an, vorrausgesetzt natürlich das Stopsignal wurde in der Zwischenzeit nicht gesendet.
     
  3. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    Wie soll das denn gezeichnet werden?

    Das Zeichnen erfolgt über die Run-Loop. So lange du in deiner while-Schleife bist, kommst du nicht zurück zur Run-Loop.

    Die oben erwähnte Delegate-Methode nutzen oder etwa einen Timer versuchen.
     
  4. Poljpocket

    Poljpocket Salvatico di Campascio

    Dabei seit:
    07.01.07
    Beiträge:
    432
    Jap, NSTimer ist wohl das richtige Stichwort. Wenn deine Animation noch dazu schön rund aussehen soll, nimm NSAnimation. Oder gleich CoreAnimation (gibts das aufm iPhone?), wie du willst - es gibt viele Möglichkeiten.

    Beispiel für NSTimer:

    Du definierst eine Methode für den Controller deines Views (-> MVC-Modell!), der zum Beispiel in Schritten die Koordinaten des rects, in dem der Punkt gezeichnet werden soll, verändert. Zum Beispiel so:

    Code:
    - (void)forwardAnimation:(NSTimer *)inAnimationTimer {
         myPointRect.origin.x += 2;
         myPointRect.origin.y += 4;
         // neu zeichnen ...
    }
    
    Du kannst mit einer Verzweigung (if) prüfen, ob der Punkt schon an den Zielkoordinaten angekommen ist, oder nicht. Wenn ja, Timer stoppen (-> Doku), sonst Werte ändern und weiter laufenlassen.

    Du erstellst einen Timer für ca. 1/30 Sekunde Wiederholungsrate (wie das geht, selber nachlesen), der dann immer die obige Methode aufruft, voilà deine Animation.

    So, genug Hilfe, das sollte reichen, nicht?

    Viele Grüsse ppocket
     
  5. CamDam

    CamDam Doppelter Prinzenapfel

    Dabei seit:
    15.06.08
    Beiträge:
    439
    Ohne Ahnung von objective c zu haben ...
    ... setz dich mal mit Mutex und Threads auseinander ;)
     

Diese Seite empfehlen