2010-03-26 8 views
0

Je dois faire quelques vues différentes contenant 72 lumières LED. J'ai construit une classe de LED afin que je puisse boucler à travers les LED et les placer à différentes couleurs (vert, rouge, orange, bleu aucun etc.). La LED charge ensuite le .png approprié.Stratégie pour animer beaucoup de "LED" - thread?, Animations UIView? NSOperation? (iPhone)

Cela fonctionne bien, je boucle sur les LED et les définir. Maintenant, je sais qu'à un certain moment, ils devront non seulement activer/désactiver la couleur de changement, mais devront s'allumer avec un petit retard. Comme un égaliseur.

J'ai un 5-10 vues contenant les 72 LED et je voudrais atteindre ce qui précède avec le minimum de mémoire/tension de l'unité centrale.

for(LED *l in self.ledArray) { 

    [l display:Green]; 
} 

I simplement boucle comme indiqué ci-dessus et à l'intérieur de la LED est une switch case qui fait la logique correct. S'il s'agissait de LED et d'un microcontrôleur, j'utiliserais sleep(100) ou similaire dans la boucle, mais j'aimerais vraiment éviter ce genre de choses pour des raisons évidentes.

Je pensais que faire un performOnThread withDelay serait vraiment consommer, donc UIView animation changer l'alpha et NSOperation serait aussi beaucoup de levage pour une petite fonctionnalité.

Existe-t-il une manière à la fois efficace et intelligente de contourner ce problème?

Merci pour toute inspiration donnée :)

Répondre

2

J'utiliserais certainement OpenGL!

+0

Salut rjobidon Est-ce que l'utilisation de .png est si importante qu'elle est justifiable? J'ai connu un peu de décalage depuis la mise en œuvre de ce qui précède avec png, je n'ai juste pas eu à prouver que les png sont les coupables. Merci pour l'entrée :) – RickiG

+0

OpenGL sera un charme pour gérer la grande quantité de manipulation d'image, avec un taux de trame élevé. Si vous ne voulez pas d'OpenGL, vous pouvez également implémenter un tampon hors écran pour effectuer une manipulation d'image-objet, puis mettre à jour une seule vue d'image. Il pourrait être plus simple qu'OpenGL et plus efficace que 72 images indépendantes à gérer. Votre première solution est simple mais oblige l'OS à gérer 72 objets graphiques ... Bonne chance! – rjobidon