2009-07-11 9 views
1

Ich habe ein Array und einen Timer, der ein neues Objekt zu meinem Array alle 5 Sekunden hinzufügt, aber ein kleines Problem auftritt. Ich habe einen Code, der wiederholt aufgerufen wird, der die Objekte in meinem Array verschiebt, aber aus irgendeinem Grund hört das vorherige Objekt auf, sich zu bewegen, wenn ein neues Objekt in meinem Array erzeugt wird. Wie mache ich es so, dass jedes einzelne Objekt im Array aufgerufen wird, anstatt nur dasjenige, das als letztes hervorkommt?Verschieben jedes Objekt in meinem Array?

Hier ist mein Code, um die Objekte zu bewegen genannt:

for (UIView *astroids in astroidArray) { 
    int newX = astroids.center.x + 0; 
    int newY = astroids.center.y + 1; 
    astroids.center = CGPointMake(newX,newY); 
} 

Edit: Sorry, hier ist mein Code für meine Array:

// spawn the astroids every few seconds randomly along the x axis 
// and remove them once they get off the screen 
if ((gameStarted == YES) && (gameOver == NO)) { 
    int randomX = arc4random() % 320; 

    astroidArray = [[NSMutableArray alloc] init]; 

    UIImage *astroid = [UIImage imageNamed:@"astroidwhite.png"]; 
    UIImageView *astroids = [[UIImageView alloc] initWithImage:astroid]; 

    //set X and Y of the new imageView 
    astroids.center = CGPointMake(randomX , -10); 

    //add to array 
    [astroidArray addObject:astroids]; 

    //add to the view, so it gets displayed. 
    [self.view addSubview: astroids]; 
    [astroids release]; 
} 
+0

Ich denke, das Problem liegt darin, wie Sie "Androiden" zum Array hinzufügen. Können Sie den Code davon zeigen? – drvdijk

+0

gut geschrieben den Code –

+0

Ich aktualisierte die Tags, da dies nicht iPhone-spezifisch ist, nur ein Problem mit Cocoa Speicherverwaltung. Formatierte den Code und fügte die Änderung in die Frage ein. (Bitte löschen Sie die redundante Antwort unten - es ist am besten, wenn der ganze Kontext in der Frage ist.) Ein letzter Vorschlag: Es wird "Asteroid" statt "Astroid" geschrieben. Es spielt keine Rolle, welche Variablennamen Sie wählen, aber beachten Sie die Rechtschreibfehler, wenn Sie sie Benutzern beschreiben. :-) –

Antwort

2

Es sieht aus wie Sie eine neue sind Zuteilen Array jedes Mal, wenn Sie einen neuen Asteroiden zuweisen. Sie fügen dann den neuen Asteroiden dem Array hinzu, also ist es der einzige im Array.

Folglich, wenn Sie das Array durchlaufen, gibt es nur einen Asteroiden.

Update:

Also, dieses Problem zu beheben, weisen Sie das Array einmal (während des Starts des Spiels?). Erstellen Sie nicht jedes Mal ein neues Array.

Dieser Teil:

astroidArray = [[NSMutableArray alloc] init]; 

... sollte nur einmal geschehen, nicht jedes Mal, wenn Sie einen neuen Asteroiden erstellen.

+0

Außerdem gibt es ein Array bei jedem Durchgang durch die Schleife. – smorgan

+0

Was sollte ich in meinem Code ändern, um dies zu beheben, wenn ich fragen darf? –

+0

OMG danke! habe es perfekt repariert, tut mir leid, dass ich Arrays noch nicht so gut kenne, aber das hat mich aus dem Gleichgewicht gebracht. –

Verwandte Themen