Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1331 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Passage de variables entre méthode imbriquées

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Passage de variables entre méthode imbriquées

n°2267469
hypermc
Posté le 09-10-2015 à 23:54:35  profilanswer
 

Bonsoir,
Je cherche à réaliser un petit jeu en JAVA avec Android Studio. Je connais d'autres languages de programmation DELPHI, Visual Basic, mais je débute en JAVA... Grrr c'est dur, dur...
 
J'ai réussi déjà à utiliser des boutons, faire afficher des sprites avec des évènements sonores... Début prometteur mais je bloque complètement sur un timer. J'ai besoin à chaque impulsion du timer de faire afficher des sprites à l'écran. Donc j'ai besoin de faire passer des variables (sprites visible, position, etc...)
 
Voici un bout de code :
 
 public void managerOfTime(int delay) {
        int pos;
        pos=1;
            Timer timer = new Timer();
            timer.schedule(new TimerTask() {
                 
                @Override
                public void run() {
                    runOnUiThread(new Runnable() {
                        @Override
                                 
                        public void run() {
                             
                            // task to be done every 1000 milliseconds
                            managerOfSound(hd);
                            managerOfOeufs(3,pos);
                            pos++;
                        }
                         
                    });
                }
 
            }, 0, delay);
            if (pos==5) {
                 timer.cancel();
            }
 
    }
 
J'ai ma variable pos qui reste souligné en rouge dans le code (2 endroits en gras ci-dessus), si je passe ma souris dessus, j'ai un message :
Variable 'pos' is accessed from within inner class, needs to be declared final
 
Bref que faire ??? Est-ce que c'est ces methodes imbriquées qui posent problèmes ? Comment faire pour déclarer cette variable ? Si vous avez une autre solution de timer plus simple, je suis preneur  
 
Merci d'avance pour votre aide  :jap:  
 
 

mood
Publicité
Posté le 09-10-2015 à 23:54:35  profilanswer
 

n°2267472
caps lock
Posté le 10-10-2015 à 01:36:05  profilanswer
 

Tu dois déclarer ta variable pos en final et c'est une règle du java

Any local variable, formal parameter, or exception parameter used but not declared in an inner class must be declared final


Code :
  1. final int pos;


 
En gros comme tu utilises une classe anonyme ton compilateur va devoir créer une copie de ta variable pour qu'elle soit visible, et pour s'assurer que la copie est identique tu dois déclarer la variable final.
 
EDIT : si tu veux pousser le truc, regarde le 2ième post http://stackoverflow.com/questions [...] mous-class


Message édité par caps lock le 10-10-2015 à 01:37:27
n°2267479
hypermc
Posté le 10-10-2015 à 09:08:40  profilanswer
 

Bonjour,
 
Merci de ta réponse, mais du coup ma variable pos n'est plus une variable mais devient une constante.
Et j'ai un message d'erreur (Cannot assign a value to final variable pos) lorsque je veux l'incrémenter avec mon :pos++;
 
Bref ça coince encore...  :(  
Dans mon cas, l'idéal serait d'avoir un Timer qui ne fait pas appel à des sous méthodes.
 
Merci encore
 
 :hello:

n°2268068
mikha31
SOON BROKE
Posté le 19-10-2015 à 15:48:10  profilanswer
 

J'arrive 9 jours plus tard et t'es peut-être passé à autre chose, mais tu peux par exemple déclarer ta variable pos dans ton inner class ainsi que l'appel au timer.cancel() (et tu passes la déclaration du timer avec final bien sûr).
 
Pas vraiment de raison de les sortir de l'inner class vu que t'en as besoin que là.


---------------
Are we human or are we (dance)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Passage de variables entre méthode imbriquées

 

Sujets relatifs
Utiliser une méthode d'une class imbriquée dans une classSystem.out.println dans méthode main
Passage d'excel à une page web[RESOLU] Utiliser la méthode setTimeout sans HTML
Ajout de variables dans un tableau[adwords] ajouter des variables de tracking à mes annonces
Javascript : fusionner deux variablescomment fair un passage de stage et gameover ?
Importer valeurs depuis un fichier texte dans des variables VBSJeu de plateforme AS3 (problème de passage de niveau)
Plus de sujets relatifs à : Passage de variables entre méthode imbriquées


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR