밀하우스 마나스톰
GP
밀하우스 마나스톰
전체 방문자
오늘
어제
  • 분류 전체보기 (71)
    • Cocos Creato.. (35)
    • JavaScript 기.. (11)
    • JavaScript 게.. (4)
    • Dev Tool (1)
    • 1인 개발 (19)
      • 개발 환경 (4)
      • 기능 구현 (2)
      • 게임 리소스 (5)
      • 스팀 게임 출시 (4)
      • 좋은 글 스크랩 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 웹 게임
  • 자바스크립트
  • 스팀
  • javascript
  • 유니티
  • Sprite Frame
  • typescript
  • steam
  • 코코스 크리에이터
  • Cocos Creator
  • 절차
  • 게임 등록
  • 배열 함수
  • 무료 사운드
  • 코코스
  • resolution
  • tween
  • 타입스크립트
  • 게임 출시
  • 해상도

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
밀하우스 마나스톰

GP

[2.4.5 버그] cc.tween repeatForever
Cocos Creator

[2.4.5 버그] cc.tween repeatForever

2022. 3. 10. 16:36
this.infiniteRotate = cc.tween(this.wheel).delay(0.8).by(0.4, { angle : -360 }).repeatForever().start();

0.8초의 첫 대기시간을 가진 뒤, 0.4초동안 360도 회전하는 동작을 무한히 반복하는 코드다.

 

크리에이터 버전 2.4.5에서 잘 작동하던 코드가 2.4.8 버전업 하고나서 문제가 생겼다.

 

 

[Action update]. override me 라는 로그가 계속 찍히면서 오브젝트가 회전하지 않았다.

 

구글링 결과 확실히 버전과 연관이 있는 버그였다.

 

https://forum.cocos.org/t/2-1-2-tween-repeatforever/80820

 

 

(중국어 답변을 구글 번역기로 돌림) 여러 차례 이 글을 읽어본 결과.

 

"모든 FiniteTimeAction이 시퀀스에 추가될 수 있어야하지만 RepeatForever는 추가할 수 없다는 것입니다."

 

이 문장이 핵심인것 같다. FiniteTimeAction은 by, to, call 같은 Tween 클래스의 함수들을 의미한다.

 

 

this.infiniteRotate = cc.tween(this.wheel).by(0.4, { angle : -360 }).repeatForever().start();

실제로 delay를 빼니까 정상 작동 했다.

 

delay가 아니더라도 repeatForever 앞에 두 개 이상의 Action이 있으면 repeatForever가 작동을 안하는 문제였다.

 

 

this.infiniteRotate = cc.tween(this.wheel)
                        .delay(0.8).repeatForever(cc.tween().by(0.4, { angle : -360 })).start();

해결책으로 제시되는 방안으로 수정해봐도 문제는 해결되지 않았다.

 

위의 코드는 여전히 같은 에러를 출력하고, delay를 빼야 작동한다.

 

 

this.infiniteRotate = cc.tween(this.wheel)
                        .delay(0.8)
                        .call(() => cc.tween(this.wheel).by(0.4, { angle : -360 }).repeatForever().start())
                        .start();

두 번째 방법으로는 repeatForever 앞에 하나의 작업만 오도록 tween 자체를 2개로 나누는 것이다.

 

이렇게 하면 본래 의도대로 작동을 하긴 하는데...

 

 

this.infiniteRotate.stop();

문제는 this.infiniteRotate 트윈을 중지시켜도, 그 안에 있는 repeatForever 트윈은 멈추지 않는다.

 

repeatForever 트윈까지 변수에 담아서 중지시켜줘야한다.

 

 

코코스 놈들아......

'Cocos Creator' 카테고리의 다른 글

일정시간 동안 숫자 증가시키는 UI  (0) 2022.03.18
실시간 시간 표시 (Timer)  (0) 2022.03.18
비동기 함수 실행 방법들  (0) 2022.01.07
getChildByName  (0) 2021.06.11
cc.tween  (0) 2021.06.09
    'Cocos Creator' 카테고리의 다른 글
    • 일정시간 동안 숫자 증가시키는 UI
    • 실시간 시간 표시 (Timer)
    • 비동기 함수 실행 방법들
    • getChildByName
    밀하우스 마나스톰
    밀하우스 마나스톰

    티스토리툴바