Schleife erstellen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Schleife erstellen

    Hallo,

    wie kann ich diesen Code in eine Schleife packen, die solange ausgeführt wird, bis das CollisionObejct auf ein anderes Object trifft und somit kollidiert ?









    Quellcode

    1. - (IBAction)START:(id)sender {
    2. do {
    3. CGRect frame = _CollisionObject.frame;
    4. frame.origin.x = 234;
    5. frame.origin.y = 194;
    6. [UIView beginAnimations:nil context:nil];
    7. [UIView setAnimationDuration:3.0];
    8. _CollisionObject.frame = frame;
    9. [UIView commitAnimations];
    10. if (_CollisionObject.center.x >233) {
    11. CGRect frame = _CollisionObject.frame;
    12. frame.origin.x = 36;
    13. frame.origin.y = 194;
    14. [UIView beginAnimations:nil context:nil];
    15. [UIView setAnimationDuration:3.0];
    16. _CollisionObject.frame = frame;
    17. [UIView commitAnimations];
    18. }
    Alles anzeigen
  • Dadurch das du zur gleichen Frage einen zweiten Thread aufmachst wird es auch nicht besser.

    Siehe Dir die Doku zu NStimer an, Schau Dir an wie man einen timer benutzt und programmiert.

    Es wird dir hier niemand deine App schreiben und fretigen Code zum rauskopieren reinstellen

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Das funktioniert so leider nicht: Der Animationsblock markiert den View nur zum Animieren und außerdem liefert Dir die Property frame während die Animation nicht die aktuellen Koordinaten des Views. Dafür musst Du auf Core-Animation-Ebene (_CollisionObject.layout.frame).

    Programmierst Du ein Spiel?
    „Meine Komplikation hatte eine Komplikation.“
  • matz schrieb:

    Thallius schrieb:

    Dadurch das du zur gleichen Frage einen zweiten Thread aufmachst wird es auch nicht besser.

    Siehe Dir die Doku zu NStimer an, Schau Dir an wie man einen timer benutzt und programmiert.

    Es wird dir hier niemand deine App schreiben und fretigen Code zum rauskopieren reinstellen

    Claus
    ach komm schon Claus, heute ist doch Sonntag :D


    Echt jetzt? Ich habe gerade 9h Java programmiert weil ich im Moment drei Aufträge gleichzeitig habe. Freelancer sein ist echt doof. Statt das sich das mal ordentlich aufs Jehr verteilt hast du immer zuviel oder zu wenig arbeit...

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:

    matz schrieb:

    Thallius schrieb:

    Dadurch das du zur gleichen Frage einen zweiten Thread aufmachst wird es auch nicht besser.

    Siehe Dir die Doku zu NStimer an, Schau Dir an wie man einen timer benutzt und programmiert.

    Es wird dir hier niemand deine App schreiben und fretigen Code zum rauskopieren reinstellen

    Claus
    ach komm schon Claus, heute ist doch Sonntag :D


    Echt jetzt? Ich habe gerade 9h Java programmiert weil ich im Moment drei Aufträge gleichzeitig habe. Freelancer sein ist echt doof. Statt das sich das mal ordentlich aufs Jehr verteilt hast du immer zuviel oder zu wenig arbeit...

    Gruß

    Claus





    Mh dann hast du dir ja jetzt ein Feierabendbier verdient ;)
  • osxentwicklerforum.de/index.php/User/7054-matz/@macmoonshine

    Danke für deine Hilfbereitschaft :D
    Ja, es soll ein Spiel werden.
    Kannst du mir das näher erklären, was du da geschrieben hast?
    Also ich würde das hier gerne in eine Schleife packen:

    Quellcode

    1. - (IBAction)START:(id)sender {
    2. CGRect frame = _CollisionObject.frame;
    3. frame.origin.x = 36;
    4. frame.origin.y = 194; //" "
    5. [UIView beginAnimations:nil context:nil];
    6. [UIView setAnimationDuration:3.0];
    7. _CollisionObject.frame = frame;
    8. [UIView commitAnimations];
    9. if (_CollisionObject.center.x >35) {
    10. CGRect frame = _CollisionObject.frame;
    11. frame.origin.x = 234;
    12. frame.origin.y = 194;
    13. [UIView beginAnimations:nil context:nil];
    14. [UIView setAnimationDuration:3.0];
    15. _CollisionObject.frame = frame;
    16. [UIView commitAnimations];
    17. }}
    Alles anzeigen




    Ich habe auch schon jegliche Schleifen ausprobiert, funktionieren aber alle leider nicht. Sobald eine Schleife eingebaut ist, passiert bei Knopfdruck nichts mehr, sonst schon: Das Object bewegt sich von Recht ruckartig (!) nach links und danach normal wie ich es möchte in 3 sekunden zum rechten Bildrand, das soll geloopt werden, und die ruckartige Bewegung kann ich mir auch nicht erklären...

    Und das mit der Kollision hatte ich versucht mit einem NSTimer zu realisieren, der ständig auswertet, ob sich 2 Objecte berühren:

    Quellcode

    1. -(void) checkCollision {
    2. if(CGRectIntersectsRect(_movedTo.frame, _CollisionObject.frame)) {
    3. UIAlertView *alert = [[UIAlertView alloc]
    4. initWithTitle:@"You failed!"
    5. message:@"Try harder." delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil
    6. ];


    Das müsste doch funktionieren, oder? 8|


    Das konnte ich leider noch nicht testen, da das Object sich ja noch nicht hin und her bewegt..


    Vielen Dank schonmal im Vorraus. Gruß
    Olli

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von OPilot ()

  • Du hast die Lösung bereits in dem anderen Thread zu stehen.
    Ich wiederhole es hier einfach noch mal. Packe die Bewegung des Objektes in eine update Methode (NSTimer). In der Update Methode bewegst du dein Objekt. In der Update Methode kannst du auch prüfen, ob der Button schon gedrückt wurde - falls nicht bewegst du das Objekt halt nicht.

    Wenn es ein Spiel werden soll, schlage ich dir vor dich mit Apples Sprite Kit zu beschäftigen.
  • ioscampus schrieb:

    Du hast die Lösung bereits in dem anderen Thread zu stehen.
    Ich wiederhole es hier einfach noch mal. Packe die Bewegung des Objektes in eine update Methode (NSTimer). In der Update Methode bewegst du dein Objekt. In der Update Methode kannst du auch prüfen, ob der Button schon gedrückt wurde - falls nicht bewegst du das Objekt halt nicht.

    Wenn es ein Spiel werden soll, schlage ich dir vor dich mit Apples Sprite Kit zu beschäftigen.




    Ok danke, das habe ich wohl zu schnell überflogen. Wenn ich das Ganze in diese Update Methode packe, wirkt das dann so wie ein loop?
  • Quellcode

    1. - (IBAction)START:(id)sender {
    2. __timer = [NSTimer scheduledTimerWithTimeInterval:3.0f target:self selector:@selector(checkCollision) userInfo:nil repeats:YES];
    3. CGRect frame = _CollisionObject.frame;
    4. frame.origin.x = 36;
    5. frame.origin.y = 194; //" "
    6. [UIView beginAnimations:nil context:nil];
    7. [UIView setAnimationDuration:3.0];
    8. _CollisionObject.frame = frame;
    9. [UIView commitAnimations];
    10. if (_CollisionObject.center.x >35) {
    11. CGRect frame = _CollisionObject.frame;
    12. frame.origin.x = 234;
    13. frame.origin.y = 194;
    14. [UIView beginAnimations:nil context:nil];
    15. [UIView setAnimationDuration:3.0];
    16. _CollisionObject.frame = frame;
    17. [UIView commitAnimations];
    18. }}
    Alles anzeigen




    Meinst du so?