Bonjour,
Je travaille actuellement sur un petit jeu. Les menus sont gérés par des layouts et le rendu du jeu en lui même est géré par une SurfaceView.
Game (Activity):
->Layout (menus)
->SurfaceView ->Thread
Le thread permet de produire la boucle principale. Lorsque je lance le jeu (surfaceview) je lance avec la view (setContent) le thread. Jusque là pas de problème. Cependant, je trouve pas la solution pour revenir aux menus en sachant que la fonction est appelé dans le Game (Activity) mais depuis la surfaceView donc le thread.
En toute logique, je dois stopper le thread et faire un setContent(R.layout.menu) mais le fait de stopper le thread "bloque" la fonction (enfin j'en ai l'impression parce que le jeu freeze sans crasher).
Game:
La fonction stopGamePanel est est appelé depuis le gamPanel (SurfaceView).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 public void stopGamePanel() { try { gamePanel.gameThread.join(); } catch (InterruptedException e) { } setMainMenu(); } public void setMainMenu() { setContentView(R.layout.main_menu); //PLAY final Button buttonPlay = (Button)findViewById(R.id.buttonPlay); buttonPlay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setContentView(gamePanel); gamePanel.requestFocus(); } }); //STATS final Button buttonStats = (Button)findViewById(R.id.buttonStats); buttonStats.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setStatsMenu(); } }); //QUIT final Button buttonQuit = (Button)findViewById(R.id.buttonQuit); buttonQuit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); }
Merci
Partager