danielfr40 Posté(e) 7 janvier 2011 Share Posté(e) 7 janvier 2011 Dans mes programmes de jeu, j'utilise une view. Je mémorise le canvas passé en argument de la fonction OnDraw afin de dessiner dans la view sur action de l'utilisateur. Mais mes modifications ne sont pas affichées, ou alors au bout de 10 secondes, je vois alors que mes modifications ont bien été prises en compte J'ai vu que la plupart des programmes utilisaient la fonction invalidate pour provoquer la mise à jour de l'affichage de la view, mais cette fonction efface alors une zone de la view, me forçant à la redessiner Je ne trouve pas de fonction update ou refresh au niveau de l'activité ou de la view qui forcerait son réaffichage sans avoir besoin de la redessiner merci pour votre aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
naholyr Posté(e) 7 janvier 2011 Share Posté(e) 7 janvier 2011 C'est le rôle de la méthode "invalidate()" normalement Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 7 janvier 2011 Share Posté(e) 7 janvier 2011 La modification de l'affichage au travers du Canvas ne devrait se faire que dans la méthode onDraw. Le principe de base est que, si une action utilisateur implique de modifier l'affichage, tu invalides l'affichage par invalidate(), Android, de ce fait, appelle onDraw, dans laquelle tu rédessines ta vue. D'autre part, Android peut être amené a appelé onDraw dans d'autres cas (une popup qui masquait une partie de l'affichage, et qui, une fois effacée, nécessite de redessiner la partie sous la popup, par ex.) et tu dois donc être en mesure, dans onDraw, de pouvoir redessiner l'affichage entièrement et de manière cohérente par rapport à l'état de ton application Dans ton cas, si certaines parties de l'écran sont dessinées en dehors de l'appel à onDraw, un appel à onDraw initié par le système te fera perdre ces modifications visuelles Lien vers le commentaire Partager sur d’autres sites More sharing options...
danielfr40 Posté(e) 7 janvier 2011 Auteur Share Posté(e) 7 janvier 2011 La modification de l'affichage au travers du Canvas ne devrait se faire que dans la méthode onDraw. Le principe de base est que, si une action utilisateur implique de modifier l'affichage, tu invalides l'affichage par invalidate(), Android, de ce fait, appelle onDraw, dans laquelle tu rédessines ta vue. D'autre part, Android peut être amené a appelé onDraw dans d'autres cas (une popup qui masquait une partie de l'affichage, et qui, une fois effacée, nécessite de redessiner la partie sous la popup, par ex.) et tu dois donc être en mesure, dans onDraw, de pouvoir redessiner l'affichage entièrement et de manière cohérente par rapport à l'état de ton application Dans ton cas, si certaines parties de l'écran sont dessinées en dehors de l'appel à onDraw, un appel à onDraw initié par le système te fera perdre ces modifications visuelles Je vois, c'est bien ce que je craignais. Il va falloir que je gère un cache bitmap et que je le copie dans onDraw J'ai fais des jeux bi-environnement, pour windows (javase) et téléphone (javame) avec un moteur commun et juste des procédures d'affichage différentes Je les porte actuellement sous android, bien que je n'ai pas encore de machine android J'avais trouvé dans ces deux envirronements des objets persistants, les panels sous javase et les tiled/sprites sous javame, dont je ne m'occupais pas du rafraîchissement Mais il semble qu'il n'y ait pas l'équivallant sous android Si java se veut portable, c'est quand même dommage qu'on voit tant de divergeances entre les kits de développement, sans parler des os qui ne supportent officiellement aucun interpréteur comme apple ou microsoft mobile Merci pour votre aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.