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

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

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

최근 댓글

최근 글

티스토리

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

GP

일정시간 동안 숫자 증가시키는 UI
Cocos Creator

일정시간 동안 숫자 증가시키는 UI

2022. 3. 18. 17:36

 

보통 이러한 기능은 타겟으로 하는 라벨만 다를 뿐, 여러 클래스에서 사용할 가능성이 높다.

 

 

/**
 * @param subject 스케쥴러를 실행할 주체
 * @param start 시작 값
 * @param add 시작 값에 추가할 변화 값
 * @param duration 지속시간
 * @param label 타겟 라벨
 * @returns 스케쥴러
 */
public static MoneyCounter(subject:any, start:number, add:number, duration:number, label:cc.Label){
    let time = 0;       // 누적 시간
    let current = 0;    // 누적 시간에 따른 현재 값
    
    let counter = function() {
        time += cc.director.getDeltaTime();
        if (time >= duration){
            label.string = StringUtil.ToCommaString(start + add);
            subject.unschedule(counter);
        }
        else {
            current = Math.floor(start + add * time / duration);
            label.string = StringUtil.ToCommaString(current);
        }
    }
    
    subject.schedule(counter, cc.director.getDeltaTime());
    return counter;
}

보통 이러한 함수는 전역에서 접근할 수 있는 클래스에 static 함수로 구현해놓고 쓴다.

 

cc.tween을 쓰는 방법도 있지만, schedule을 사용하는 방식으로 구현했기 때문에

 

스케쥴을 실행하는 주체를 매개변수로 받아서 해당 주체가 실행하도록 한다.

 

중간에 ToCommaString은 number 250을 string 250.00 으로 변환해주는, 마찬가지로 커스텀 함수다.

 

 

for (let i = 0; i < this.labels.length; ++i){
    if (this.counters[i] != null)
        this.unschedule(this.counters[i]);
        
    let start = StringUtil.ToNumber(this.labels.string);
    let add = stepValues[idx++] - start;
    this.counters[i] = Util.MoneyCounter(this, start, add, 0.5, this.labels[i]);
}

그리고 위와 같이 사용하면 된다.

 

MoneyCounter를 실행할 때 시작된 스케쥴을 받아놨다가

 

다음 스케쥴이 시작되면 직전의 스케쥴을 중단시키고 그 값을 이어받아서 새롭게 스케쥴을 시작한다.

 

이렇게해야 숫자가 끝까지 올라가지 않았을 때, 버튼을 클릭해서 스케쥴을 새로 시작해도 부드럽게 이어나갈 수 있다.

 

중간의 ToNumber 함수는 ToCommaString으로 변환돼었던 string 250.00을 다시 number 250으로 변환해주는 함수다.

 

 

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

클릭(터치)한 지점의 좌표 구하기  (0) 2022.03.25
ParticleSystem, Animation 재시작  (0) 2022.03.18
실시간 시간 표시 (Timer)  (0) 2022.03.18
[2.4.5 버그] cc.tween repeatForever  (0) 2022.03.10
비동기 함수 실행 방법들  (0) 2022.01.07
    'Cocos Creator' 카테고리의 다른 글
    • 클릭(터치)한 지점의 좌표 구하기
    • ParticleSystem, Animation 재시작
    • 실시간 시간 표시 (Timer)
    • [2.4.5 버그] cc.tween repeatForever
    밀하우스 마나스톰
    밀하우스 마나스톰

    티스토리툴바