コード例 #1
0
ファイル: PuzzleGame.java プロジェクト: DigiToy/FF_norm
    // 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;
    }