// events when touching the screen public boolean onTouchEvent(MotionEvent event) { int eventaction = event.getAction(); int X = (int) event.getX(); int Y = (int) event.getY(); switch (eventaction) { case MotionEvent.ACTION_DOWN: // touch down so check if the finger // is on // a rectangle // recID = 0; if (imgShow.isBelong(X, Y)) { isPressedInShow = true; } // if (imgBack.isBelong(X, Y)) { // // isPressedInBack = true; // // PuzzleGame.this.finish(); // // } // if (imgSoundOn.isBelong(X, Y) || imgSoundOff.isBelong(X, Y)) // { // if (AppSettings.soundIsOn) // AppSettings.music.pause(); // else // AppSettings.music.start(); // AppSettings.soundIsOn = !AppSettings.soundIsOn; // // } for (int i = 0; i < colorRects.size(); i++) { if (colorRects.get(i).isBelong(X, Y)) { select(X, Y); // recID = colorRects.get(i).getID(); break; } else { isSelected = false; } } break; case MotionEvent.ACTION_MOVE: // touch drag with the rectangle // move the rectangles the same as the finger currentImg = getImageById(recID); if (isSelected) { currentImg = getImageById(recID); switch (recID) { case 3: if (Math.abs(currentImg.getX() - frameColorRect.getX()) <= currentImg.getWidth() / 3 && Math.abs(currentImg.getY() - frameColorRect.getY()) <= currentImg.getHeight() / 2) { currentImg.setX(frameColorRect.getX()); currentImg.setY(frameColorRect.getY()); if (currentImg.getIsDrawable()) { PuzzleGame.this.playClick(); currentImg.setIsDragable(false); } } break; case 4: if (Math.abs(currentImg.getX() - frameColorRect.getX() - currentImg.getWidth()) <= currentImg.getWidth() / 3 && Math.abs(currentImg.getY() - frameColorRect.getY()) <= currentImg.getHeight() / 2) { currentImg.setX(frameColorRect.getX() + currentImg.getWidth()); currentImg.setY(frameColorRect.getY()); if (currentImg.getIsDrawable()) { PuzzleGame.this.playClick(); currentImg.setIsDragable(false); } } break; case 5: if (Math.abs(currentImg.getX() - frameColorRect.getX() - 2 * currentImg.getWidth()) <= currentImg.getWidth() / 3 && Math.abs(currentImg.getY() - frameColorRect.getY()) <= currentImg.getHeight() / 2) { currentImg.setX(frameColorRect.getX() + 2 * currentImg.getWidth()); currentImg.setY(frameColorRect.getY()); if (currentImg.getIsDrawable()) { PuzzleGame.this.playClick(); currentImg.setIsDragable(false); } } break; case 6: if (Math.abs(currentImg.getX() - frameColorRect.getX() - 3 * currentImg.getWidth()) <= currentImg.getWidth() / 3 && Math.abs(currentImg.getY() - frameColorRect.getY()) <= currentImg.getHeight() / 2) { currentImg.setX(frameColorRect.getX() + 3 * currentImg.getWidth()); currentImg.setY(frameColorRect.getY()); if (currentImg.getIsDrawable()) { PuzzleGame.this.playClick(); currentImg.setIsDragable(false); } } break; case 7: if (Math.abs(currentImg.getX() - frameColorRect.getX()) <= currentImg.getWidth() / 3 && Math.abs(currentImg.getY() - frameColorRect.getY() - currentImg.getHeight()) <= currentImg.getHeight() / 2) { currentImg.setX(frameColorRect.getX()); currentImg.setY(frameColorRect.getY() + currentImg.getHeight()); if (currentImg.getIsDrawable()) { PuzzleGame.this.playClick(); currentImg.setIsDragable(false); } } break; case 8: if (Math.abs(currentImg.getX() - frameColorRect.getX() - currentImg.getWidth()) <= currentImg.getWidth() / 3 && Math.abs(currentImg.getY() - frameColorRect.getY() - currentImg.getHeight()) <= currentImg.getHeight() / 2) { currentImg.setX(frameColorRect.getX() + currentImg.getWidth()); currentImg.setY(frameColorRect.getY() + currentImg.getHeight()); if (currentImg.getIsDrawable()) { PuzzleGame.this.playClick(); currentImg.setIsDragable(false); } } break; case 9: if (Math.abs(currentImg.getX() - frameColorRect.getX() - 2 * currentImg.getWidth()) <= currentImg.getWidth() / 3 && Math.abs(currentImg.getY() - frameColorRect.getY() - currentImg.getHeight()) <= currentImg.getHeight() / 2) { currentImg.setX(frameColorRect.getX() + 2 * currentImg.getWidth()); currentImg.setY(frameColorRect.getY() + currentImg.getHeight()); if (currentImg.getIsDrawable()) { PuzzleGame.this.playClick(); currentImg.setIsDragable(false); } } break; case 10: if (Math.abs(currentImg.getX() - frameColorRect.getX() - 3 * currentImg.getWidth()) <= currentImg.getWidth() / 3 && Math.abs(currentImg.getY() - frameColorRect.getY() - currentImg.getHeight()) <= currentImg.getHeight() / 2) { currentImg.setX(frameColorRect.getX() + 3 * currentImg.getWidth()); currentImg.setY(frameColorRect.getY() + currentImg.getHeight()); if (currentImg.getIsDrawable()) { PuzzleGame.this.playClick(); currentImg.setIsDragable(false); } } break; case 11: if (Math.abs(currentImg.getX() - frameColorRect.getX()) <= currentImg.getWidth() / 3 && Math.abs( currentImg.getY() - frameColorRect.getY() - 2 * currentImg.getHeight()) <= currentImg.getHeight() / 2) { currentImg.setX(frameColorRect.getX()); currentImg.setY(frameColorRect.getY() + 2 * currentImg.getHeight()); if (currentImg.getIsDrawable()) { PuzzleGame.this.playClick(); currentImg.setIsDragable(false); } } break; case 12: if (Math.abs(currentImg.getX() - frameColorRect.getX() - currentImg.getWidth()) <= currentImg.getWidth() / 3 && Math.abs( currentImg.getY() - frameColorRect.getY() - 2 * currentImg.getHeight()) <= currentImg.getHeight() / 2) { currentImg.setX(frameColorRect.getX() + currentImg.getWidth()); currentImg.setY(frameColorRect.getY() + 2 * currentImg.getHeight()); if (currentImg.getIsDrawable()) { PuzzleGame.this.playClick(); currentImg.setIsDragable(false); } } break; case 13: if (Math.abs(currentImg.getX() - frameColorRect.getX() - 2 * currentImg.getWidth()) <= currentImg.getWidth() / 3 && Math.abs( currentImg.getY() - frameColorRect.getY() - 2 * currentImg.getHeight()) <= currentImg.getHeight() / 2) { currentImg.setX(frameColorRect.getX() + 2 * currentImg.getWidth()); currentImg.setY(frameColorRect.getY() + 2 * currentImg.getHeight()); if (currentImg.getIsDrawable()) { PuzzleGame.this.playClick(); currentImg.setIsDragable(false); } } break; case 14: if (Math.abs(currentImg.getX() - frameColorRect.getX() - 3 * currentImg.getWidth()) <= currentImg.getWidth() / 3 && Math.abs( currentImg.getY() - frameColorRect.getY() - 2 * currentImg.getHeight()) <= currentImg.getHeight() / 2) { currentImg.setX(frameColorRect.getX() + 3 * currentImg.getWidth()); currentImg.setY(frameColorRect.getY() + 2 * currentImg.getHeight()); if (currentImg.getIsDrawable()) { PuzzleGame.this.playClick(); currentImg.setIsDragable(false); } } break; } if (currentImg.getIsDrawable()) { getSelected().move(X - recentX, Y - recentY); recentX = X; recentY = Y; } } break; case MotionEvent.ACTION_UP: // touch drop - just do things here after dropping isPressedInShow = false; break; } // redraw the canvas invalidate(); return true; }