Frage

Ich möchte mehrere Stücke für ein Spiel animieren, und ich möchte diese Stücke in verschiedenen Richtungen, so meine aktuelle Methode bewegen haben, eine ganze Ansicht Animieren wird nicht mehr funktionieren.

Ich frage mich, was die beste Praxis ist sofort zum Animieren mehr Artikel. (Beachten Sie, ich bin in 2D-Rendering, also ich bin derzeit nicht interessiert in 3d soltuions.)

Danke!

War es hilfreich?

Lösung

Es ist relativ einfach, mehr 2-D-Objekte auf einmal zu animieren. Es gibt zwei Möglichkeiten, wie Sie es gehen kann: animieren UIViews oder CALayers animieren. In meinem Test habe ich kaum einen Unterschied in der Leistung gefunden, wenn die beiden Animieren (beide scheinen ~ 50 Objekte zur gleichen Zeit bei 60 FPS auf dem iPhone bewegen zu unterstützen).

Um die Animationen aus einer Reihe von UIViews zu koordinieren, werden Sie keine Änderungen an der Ansicht Geometrie wickeln wollen in einem Begin / commit Animation Block:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:ANIMATIONDURATIONINSECONDS];

view1.frame = CGRectMake(newX1, newY1, view1Width, view1Height); 
view2.frame = CGRectMake(newX2, newY2, view2Width, view2Height); 
// Add other views here

[UIView commitAnimations];

Dies wird die Bewegung von zwei oder mehr Ansichten in einer geraden Linie in ihre neuen Position über eine Dauer von ANIMATIONDURATIONINSECONDS Sekunden koordinieren. Wenn Sie wollen, dass die Ansichten für jeden von ihnen unabhängig voneinander, erstellen Sie separate Animation Blöcke bewegen.

Für mehr Kontrolle über Ihre Animationen oder Cross-Plattform Mac / iPhone UI-Code zu erstellen, können Sie möchten Core Animation CALayers verwenden. CALayers animiert standardmäßig so, indem

layer.position = CGPointMake(newX, newY);

Ihre Schicht wird automatisch an die neue Position animieren. Beachten Sie, dass standardmäßig die Position der Schicht zu seiner Mitte relativ ist, Sie, dass in die normalen Ausgangsposition durch Setzen seiner Eigenschaft anchor auf 0,0 ändern.

Sie können Schicht Animationen koordinieren mit einem CATransaction:

[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:ANIMATIONDURATIONINSECONDS] forKey:kCATransactionAnimationDuration];      
layer1.position = CGPointMake(newX1, newY1);
layer2.position = CGPointMake(newX2, newY2);
[CATransaction commit];

Für anspruchsvollere Animationen können Sie CABasicAnimations und CAKeyframeAnimations erstellen und diese auf Ihre Schichten gelten sie entlang komplexen Pfade mit spezifischem Timing und Beschleunigung / Abbremsung zu bewegen.

Andere Tipps

Haben Sie sehen an dem Cocos2D-iphone-Projekt?

Ich finde es sehr einfach zu bedienen und eine Menge Arbeit aus der Hand.

Cocos2D iPhone

Es ist auch eine Menge Animation nicht und Sie können Sequenzen von Animationen erstellen, die Sie zusammen binden können.

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