Where I am having trouble is the button press automatically reacts as the same button on the next screen. For example my play button is in the second position, menu2. As soon as it is pressed, if there is a button in the 2nd slot, menu2, on the next screen it acts as if it has been pressed also. This continues until a screen comes up with no button in that position.
I have tried separating the menu code to only MotionEvent.ACTION_UP, and setting a boolean "anypressed" for a delay of 10 frames before another touch event can occur. I also tried switching the return value true/false. Nothing seems to stop the button from activating through all screens that contain that button.
Here is the code I am using for the touch event:
Using java Syntax Highlighting
- public boolean onTouchEvent(MotionEvent e) {
- setTouchControlsLayout(); // method sets area for touchscreen buttons
- gestureDetector.onTouchEvent(e); // input for fling gestures
- touchx = e.getX();
- touchy = e.getY();
- int eAction = e.getAction();
- if(eAction == MotionEvent.ACTION_UP){
- Log.i("FGF", "ACTION_UP - HAPPENED");
- if(FGFRenderer.mainmenu && !FGFRenderer.anypressed){
- //Play
- if (touchx <= menu2R && touchx >= menu2L && touchy >= menu2T && touchy <= menu2B) {
- FGFRenderer.anypressed = true; //any key has been pressed, touches delay 10 frames
- FGFRenderer.mainmenu = false;
- FGFRenderer.arcadescreen = true;
- Log.i("FGF", "Play Pressed");
- }
- //options
- if (touchx <= menu3R && touchx >= menu3L && touchy >= menu3T && touchy <= menu3B) {
- FGFRenderer.anypressed = true;
- FGFRenderer.mainmenu = false;
- FGFRenderer.optionmenu = true;
- Log.i("FGF", "Options Pressed");
- }
- //exit
- if (touchx <= menu5R && touchx >= menu5L && touchy >= menu5T && touchy <= menu5B) {
- FGFRenderer.anypressed = true;
- FGFRenderer.mainmenu = false;
- FGFRenderer.exitcheckmenu = true;
- FGFRenderer.exitcheckmenu = true;
- Log.i("FGF", "Exit Pressed");
- }
- }
- if(FGFRenderer.arcadescreen && !FGFRenderer.anypressed) {
- //ARCADE SCREEN
- if (touchx <= menu2R && touchx >= menu2L && touchy >= menu2T && touchy <= menu2B) {
- FGFRenderer.anypressed = true;
- arcade = true;
- oneplayers = true;
- difficulty = 1;
- playto = 0;
- totalmins = 2;
- totalkicks = 0;
- totalpoints = 0;
- FGFRenderer.arcadescreen = false;
- FGFRenderer.startscreen = true;
- }
- //CUSTOM
- if (touchx <= menu3R && touchx >= menu3L && touchy >= menu3T && touchy <= menu3B) {
- FGFRenderer.anypressed = true;
- arcade = false;
- FGFRenderer.arcadescreen = false;
- FGFRenderer.diffscreen = true;
- }
- //Back / return
- if (touchx <= menu4R && touchx >= menu4L && touchy >= menu4T && touchy <= menu4B) {
- FGFRenderer.anypressed = true;
- FGFRenderer.arcadescreen = false;
- FGFRenderer.mainmenu = true;
- }
- }
- if(FGFRenderer.playerscreen && !FGFRenderer.anypressed) {
- //1player
- if (touchx <= menu2R && touchx >= menu2L && touchy >= menu2T && touchy <= menu2B) {
- FGFRenderer.anypressed = true;
- oneplayers = true;
- FGFRenderer.playerscreen = false;
- FGFRenderer.diffscreen = true;
- }
- //2player
- if (touchx <= menu3R && touchx >= menu3L && touchy >= menu3T && touchy <= menu3B) {
- FGFRenderer.anypressed = true;
- oneplayers = false;
- FGFRenderer.playerscreen = false;
- FGFRenderer.diffscreen = true;
- }
- //Back / return
- if (touchx <= menu4R && touchx >= menu4L && touchy >= menu4T && touchy <= menu4B) {
- FGFRenderer.anypressed = true;
- FGFRenderer.playerscreen = false;
- FGFRenderer.arcadescreen = true;
- }
- }
- if(FGFRenderer.diffscreen && !FGFRenderer.anypressed) {
- //EASY
- if (touchx <= menu1R && touchx >= menu1L && touchy >= menu1T && touchy <= menu1B) {
- FGFRenderer.anypressed = true;
- difficulty = 0;
- FGFRenderer.diffscreen = false;
- FGFRenderer.playtoscreen = true;
- }
- //MEDIUM
- if (touchx <= menu2R && touchx >= menu2L && touchy >= menu2T && touchy <= menu2B) {
- FGFRenderer.anypressed = true;
- difficulty = 1;
- FGFRenderer.diffscreen = false;
- FGFRenderer.playtoscreen = true;
- }
- //HARD
- if (touchx <= menu3R && touchx >= menu3L && touchy >= menu3T && touchy <= menu3B) {
- FGFRenderer.anypressed = true;
- difficulty = 2;
- FGFRenderer.diffscreen = false;
- FGFRenderer.playtoscreen = true;
- }
- //Back / return
- if (touchx <= menu4R && touchx >= menu4L && touchy >= menu4T && touchy <= menu4B) {
- FGFRenderer.anypressed = true;
- FGFRenderer.diffscreen = false;
- FGFRenderer.playerscreen = true;
- }
- }
- if(FGFRenderer.playtoscreen && !FGFRenderer.anypressed) {
- //TIME
- if (touchx <= menu1R && touchx >= menu1L && touchy >= menu1T && touchy <= menu1B) {
- FGFRenderer.anypressed = true;
- playto = 0;
- FGFRenderer.playtoscreen = false;
- FGFRenderer.totimescreen = true;
- }
- //KICKS
- if (touchx <= menu2R && touchx >= menu2L && touchy >= menu2T && touchy <= menu2B) {
- FGFRenderer.anypressed = true;
- playto = 1;
- FGFRenderer.playtoscreen = false;
- FGFRenderer.tokickscreen = true;
- }
- //POINTS
- if (touchx <= menu3R && touchx >= menu3L && touchy >= menu3T && touchy <= menu3B) {
- FGFRenderer.anypressed = true;
- playto = 2;
- FGFRenderer.playtoscreen = false;
- FGFRenderer.topointsscreen = true;
- }
- //Back / return
- if (touchx <= menu4R && touchx >= menu4L && touchy >= menu4T && touchy <= menu4B) {
- FGFRenderer.anypressed = true;
- FGFRenderer.playtoscreen = false;
- FGFRenderer.diffscreen = true;
- }
- }
- if(FGFRenderer.totimescreen && !FGFRenderer.anypressed) {
- //2 min
- if (touchx <= menu1R && touchx >= menu1L && touchy >= menu1T && touchy <= menu1B) {
- FGFRenderer.anypressed = true;
- totalmins = 2;
- FGFRenderer.totimescreen = false;
- FGFRenderer.startscreen = true;
- }
- //3 Min
- if (touchx <= menu2R && touchx >= menu2L && touchy >= menu2T && touchy <= menu2B) {
- FGFRenderer.anypressed = true;
- totalmins = 3;
- FGFRenderer.totimescreen = false;
- FGFRenderer.startscreen = true;
- }
- //5 min
- if (touchx <= menu3R && touchx >= menu3L && touchy >= menu3T && touchy <= menu3B) {
- FGFRenderer.anypressed = true;
- totalmins = 5;
- FGFRenderer.totimescreen = false;
- FGFRenderer.startscreen = true;
- }
- //Back / return
- if (touchx <= menu4R && touchx >= menu4L && touchy >= menu4T && touchy <= menu4B) {
- FGFRenderer.anypressed = true;
- FGFRenderer.totimescreen = false;
- FGFRenderer.playtoscreen = true;
- }
- }
- if(FGFRenderer.tokickscreen && !FGFRenderer.anypressed) {
- //10kicks
- if (touchx <= menu1R && touchx >= menu1L && touchy >= menu1T && touchy <= menu1B) {
- FGFRenderer.anypressed = true;
- totalkicks = 10;
- FGFRenderer.tokickscreen = false;
- FGFRenderer.startscreen = true;
- }
- //20 Kicks
- if (touchx <= menu2R && touchx >= menu2L && touchy >= menu2T && touchy <= menu2B) {
- FGFRenderer.anypressed = true;
- totalkicks = 20;
- FGFRenderer.tokickscreen = false;
- FGFRenderer.startscreen = true;
- }
- //30 kicks
- if (touchx <= menu3R && touchx >= menu3L && touchy >= menu3T && touchy <= menu3B) {
- FGFRenderer.anypressed = true;
- totalkicks = 30;
- FGFRenderer.tokickscreen = false;
- FGFRenderer.startscreen = true;
- }
- //Back / return
- if (touchx <= menu4R && touchx >= menu4L && touchy >= menu4T && touchy <= menu4B) {
- FGFRenderer.anypressed = true;
- FGFRenderer.tokickscreen = false;
- FGFRenderer.playtoscreen = true;
- }
- }
- if(FGFRenderer.topointsscreen && !FGFRenderer.anypressed) {
- //3000 points
- if (touchx <= menu1R && touchx >= menu1L && touchy >= menu1T && touchy <= menu1B) {
- FGFRenderer.anypressed = true;
- totalpoints = 3000;
- FGFRenderer.topointsscreen = false;
- FGFRenderer.startscreen = true;
- }
- //5000 points
- if (touchx <= menu2R && touchx >= menu2L && touchy >= menu2T && touchy <= menu2B) {
- FGFRenderer.anypressed = true;
- totalpoints = 5000;
- FGFRenderer.topointsscreen = false;
- FGFRenderer.startscreen = true;
- }
- //10000 kicks
- if (touchx <= menu3R && touchx >= menu3L && touchy >= menu3T && touchy <= menu3B) {
- FGFRenderer.anypressed = true;
- totalpoints = 10000;
- FGFRenderer.topointsscreen = false;
- FGFRenderer.startscreen = true;
- }
- //Back / return
- if (touchx <= menu4R && touchx >= menu4L && touchy >= menu4T && touchy <= menu4B) {
- FGFRenderer.anypressed = true;
- FGFRenderer.topointsscreen = false;
- FGFRenderer.playtoscreen = true;
- }
- }
- if(FGFRenderer.optionmenu && !FGFRenderer.anypressed) {
- //1player
- if (touchx <= menu2R && touchx >= menu2L && touchy >= menu2T && touchy <= menu2B) {
- }
- //2player
- if (touchx <= menu3R && touchx >= menu3L && touchy >= menu3T && touchy <= menu3B) {
- }
- //Back / return
- if (touchx <= menu4R && touchx >= menu4L && touchy >= menu4T && touchy <= menu4B) {
- FGFRenderer.anypressed = true;
- FGFRenderer.optionmenu = false;
- FGFRenderer.mainmenu = true;
- }
- }
- if(FGFRenderer.startscreen && FGFRenderer.anypressed){
- if (touchx <= menu3R && touchx >= menu3L && touchy >= menu3T && touchy <= menu3B) {
- FGFRenderer.GameMode = new GameMode(arcade, oneplayers, difficulty, playto, totalmins, totalkicks, totalpoints);
- FGFRenderer.startscreen = false;
- }
- //Back / return
- if (touchx <= menu5R && touchx >= menu5L && touchy >= menu5T && touchy <= menu5B) {
- FGFRenderer.anypressed = true;
- FGFRenderer.optionmenu = false;
- FGFRenderer.mainmenu = true;
- }
- }
- if(FGFRenderer.gameover && !FGFRenderer.anypressed){
- //BACK
- if (touchx <= menu4R && touchx >= menu4L && touchy >= menu4T && touchy <= menu4B) {
- FGFRenderer.anypressed = true;
- FGFRenderer.gameover = false;
- FGFRenderer.mainmenu = true;
- FGFRenderer.ResetScores();
- }
- }
- if(FGFRenderer.exitcheckmenu && !FGFRenderer.anypressed){
- //Yes
- if (touchx <= menu2R && touchx >= menu2L && touchy >= menu2T && touchy <= menu2B) {
- onDestroy();
- finish();
- }
- //No
- if (touchx <= menu3R && touchx >= menu3L && touchy >= menu3T && touchy <= menu3B) {
- FGFRenderer.anypressed = true;
- FGFRenderer.exitcheckmenu = false;
- FGFRenderer.mainmenu = true;
- }
- }
- return false;
- }
- else {
- if (eAction == MotionEvent.ACTION_DOWN)
- if(!FGFRenderer.mainmenu && !FGFRenderer.optionmenu
- && !FGFRenderer.exitcheckmenu && !FGFRenderer.gameover
- && !FGFRenderer.arcadescreen && !FGFRenderer.diffscreen
- && !FGFRenderer.playerscreen && !FGFRenderer.playtoscreen
- && !FGFRenderer.tokickscreen && !FGFRenderer.topointsscreen
- && !FGFRenderer.totimescreen) {
- if (!FGFRenderer.kickstart){
- if (touchx <= menuR && touchx >= menuL && touchy >= menuT && touchy <= menuB) {
- FGFRenderer.mainmenu = true;
- }
- if (touchx <= flingR && touchx >= flingL && touchy >= flingT && touchy <= flingB) {
- fling = true;
- }
- }
- }
- return false;
- }
- }
Parsed in 0.081 seconds, using GeSHi 1.0.8.4
Everything works fine on the renderer side, but there seems to be no way to stop the button presses until the next screen has no button in that position.
Is there a better way to go about this? Am I missing something? Any help would be greatly appreciated.


