ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스티커 중앙 자석효과 방법론
    개발 2022. 4. 19. 18:49

    1.

    2.프로세스

    3.-1 좌표 설정

      /**
       * 중앙
       */
      //움직이는 스티커 영역
      Offset stickerOffset = Offset(
          __offset.dx + (widget.stickSize / 2),
          __offset.dy +
              (widget.stickSize / 2)); //스티커 중앙 영역
    
      Offset true_centerOffset = Offset(
          (widget._stickController.imageWidth.value / 2),
          (widget._stickController.imageheight.value /
              2));
    
      //그리는 영역이 왼쪽위 부터 시작하기떄문에 최종 위치는 스티커 사이즈맞고 이동
      Offset final_centerOffset = Offset(
          (widget._stickController.imageWidth.value / 2) -
              widget.stickSize / 2,
          (widget._stickController.imageheight.value /
                  2) -
              widget.stickSize / 2);
    
      var standardCenterRect = Rect.fromCenter(
          center: true_centerOffset,
          width: widget.stickSize,
          height: widget.stickSize);
    
      /**
       * 중앙
       */
    
      if (standardCenterRect.contains(stickerOffset)) {
        LineAssistantManager(stickerOffset,
            true_centerOffset, final_centerOffset);
      } else {
        widget._stickController.isCenter.value = false;
      }
    }

    3-2 로직

    LineAssistantManager(Offset stickerOffset, Offset true_StandardOffset,
        Offset Standard_finalCenterOffset) {
      if (standartMoveInCounter == 0) {
        preMoveOffset = stickerOffset;
        curMoveOffset = stickerOffset;
        standartMoveInCounter++;
      } else if (standartMoveInCounter < 90) {
       // print("centerCounter:" + standartMoveInCounter.toString());
        curMoveOffset = stickerOffset;
        double distance = (preMoveOffset - true_StandardOffset).distance;
        //print("distance:" + distance.toString());
        if ((distance >= 0) && (distance <= 20)) {
          //중앙 부근에서 정밀 조절
          preMoveOffset = curMoveOffset;
          standartMoveInCounter++;
        } else {
          //중앙부근에서 급격하게 이동
          standartMoveInCounter = 0;
          preMoveOffset = Offset(0, 0);
          curMoveOffset = Offset(0, 0);
          widget._stickController.isCenter.value = false;
        }
      } else {
        widget._stickController.isCenter.value = true;
        //  print("이동:" + standartMoveInCounter.toString());
        standartMoveInCounter = 0;
        preMoveOffset = Offset(0, 0);
        curMoveOffset = Offset(0, 0);
        _offset = Standard_finalCenterOffset;
    
        Vibrate.feedback(FeedbackType.impact);
        isMoveLock = true;
        stickerDelay();
      }
    }
Designed by Tistory.