2010-12-13 8 views
3

Sur la plate-forme Android, comment séparer le rendu de la logique? Je peux obtenir une classe de thread personnalisé de base en faisant le dessin mais ce que je ne comprends pas est où mettre la mise à jour logique. En faisant quelques recherches, je pense qu'il serait préférable d'utiliser deux threads différents pour chacun, le rendu et la mise à jour logique. Tout ce que je peux penser à atm est de mettre updatelogic avec le onDraw dans le même thread. Tout pointeur vers des tutoriels ou un aperçu sur la question serait très apprécié, merci.Rendu Android et fils logiques

+0

Voulez-vous dire que vous voulez que la logique et le rendu se déroulent en même temps? Cela pourrait causer des problèmes dans votre jeu. – prgmast3r

+0

Euhhh, si je comprends bien, vous auriez votre logique mise à jour quand il le devrait (quand le joueur appuie sur "up" pour déplacer le joueur "up"/forward) et le rendu de la position graphique/sprite mis à jour. Mais l'appel à la mise à jour de la logique ne doit pas être dans le même thread où le rendu a lieu. – semajhan

+1

semajhan, les jeux qui contiennent de la physique ne se contentent pas de se mettre à jour en fonction de l'entrée de l'utilisateur, ils sont également mis à jour en fonction du temps écoulé. –

Répondre

2

J'ai développé l'un des jeux les plus téléchargés sur le marché android, mais cela fait 2 ans depuis lors, donc cette solution peut être obsolète. Ce que je faisais était: - utiliser une vue objet comme l'affichage du contenu - remplacer la méthode draw() de cette Voir la classe de l'objet - à la fin de la méthode draw(), appelez doLogic()

Notez que Le rendu et l'appel doLogic() se produisent tous les deux dans le thread principal. Cela ressemble à un non-non, mais cela fonctionne pour la plupart des jeux (et vous donne une synchronisation automatique sans avoir à se compliquer).