2010-02-23 2 views
0

J'essaie d'apprendre à faire des jeux vidéo sur Android, et donc je dois obtenir quelques tutoriels décents sur la façon de faire des graphiques sur Android en utilisant le SurfaceView objet. Cependant chaque tutoriel graphique que j'ai essayé (principalement des trucs SurfaceView) a échoué. S'il vous plaît noter que je ne veux pas utiliser XML, car il est hors de mon élément, et Google veut juste vendre cette technique sur la publicité de la propreté, que je peux faire par programmation.Je rencontre des problèmes avec tous les tutoriels Android graphics/SurfaceView

Un problème majeur que j'ai rencontré est qu'il existe de nombreux tutoriels, à la fois de Google et de tiers, avec du code qui utilise la commande d'importation android.opengl.GLSurfaceView, ou bien importe un sous-ensemble GLSurfaceView, et que jamais fonctionne sur mon IDE. Chaque fois que j'essaie d'importer l'un ou l'autre, Eclipse veut dire qu'il ne reconnaît pas ce paquet. Ce qui est étrange, c'est que je peux importer android.opengl. *, Bien que cela fasse toujours référence au code de ces paquets pour les types et/ou les méthodes non reconnus. Après avoir essayé pendant un certain temps de tromper le premier problème, j'ai remarqué que l'exemple Lunar Lander n'essayait pas d'importer l'une de ces deux bibliothèques de problèmes. J'ai donc tiré le code et référencé les ressources pour cela dans un de mes projets infantiles, laissant tout le reste dans ce projet inutilisé. Bien sûr, j'ai changé le paquet dans lequel se trouvait le code Lunar Lander et j'ai changé le nom de la classe dans LunarLander.java ou autre chose, mais cela ne devrait pas avoir d'importance. J'ai été capable de construire la chose dans Eclipse. Cependant quand je suis allé le courir, il ne ferait que crash. Sans montrer aucun graphique Lunar Lander ou quoi que ce soit, l'émulateur me donnerait simplement ce message d'erreur disant essentiellement que mon application a cessé de fonctionner de façon inattendue et me fait fermer l'application.

1) Quel est le problème avec le paquet opengl.GLSurfaceView? 2) Quel est le problème avec l'exemple Lunar Lander? 3) Où est un bon tutoriel sur la façon de faire des jeux vidéo pour Android

Merci.

+0

Il serait utile de publier la pile de l'exception. Vous pouvez l'obtenir via logcat. –

Répondre

3

Vous construisez des jeux en 2D ou en 3D? Je ne peux pas parler en 3D, mais j'ai construit quelques jeux 2D simples et SurfaceView était plus un obstacle qu'une aide. L'émulateur ne simule qu'un seul cœur, vous n'avez donc pas vraiment d'avantage de performance sur le dessin. De plus, le temps système et la maintenance sont difficiles à gérer et empêchent de nombreuses fonctionnalités (j'ai passé quelques heures à essayer de lancer une boîte de dialogue GameOver à partir de diverses configurations, et le thread supplémentaire a empêché cela). Une alternative à SurfaceView serait d'implémenter votre propre classe qui étend View, et de surcharger onDraw (Canvas) pour dessiner ce que vous voulez (c'est ce que mes amis et moi avons fait).

Pour répondre à vos points:

  • Je ne l'ai jamais travaillé en 3D ou utilisé OpenGL Android, mais Eclipse (si c'est ce que vous utilisez) peut être un peu capricieuse avec la localisation des ressources Android. Est-ce que le reste de vos cours est chargé? Lunar Lander vous montre comment créer et détruire une vue étendue SurfaceView et SurfaceHandler. Encore une fois, il peut y avoir des contextes pour lesquels SurfaceView est un excellent choix, mais si vous ne faites que commencer avec Android et créer des jeux 2D simples, je ne pense pas que ce soit essentiel.

  • De bons tutoriels sont difficiles à trouver. J'ai appris assez pour faire this 2D game de passer quelques heures avec la version e-book de Hello Android.

Quelques copains de moi et moi travaillons sur les jeux pour Android ce semestre, nous avons également mis en place a blog que nous espérons faire une ressource aux autres que le semestre se poursuit. Malheureusement, il n'y a pas grand chose en ce moment.

Bonne chance!

+2

C'est un mauvais conseil. SurfaceView est plus de 3 fois plus rapide qu'une vue normale dans mon expérience (sur mon dessin de périphérique matériel d'un plein écran SurfaceView est d'environ 8 ms, une vue régulière est de 25 ms). – DKIT

Questions connexes