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

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

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

최근 댓글

최근 글

티스토리

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

GP

Layout Update
Cocos Creator

Layout Update

2022. 4. 6. 19:21

위와 같은 구조에서 Layout 노드에 아이템을 추가/삭제할 때마다 Layout 노드의 사이즈도 유동적으로 변한다.

 

아이템 간의 padding(간격)과 레이아웃에 속해 있는 아이템들의 넓이들을 모두 더한 값을 자동으로 계산한다.

 

그러나 스크립트에서 아이템을 추가했을 때는 자동으로 계산이 되지 않는다.

 

 

let width1 = this.testLayout.node.width;                        // 391.48
        
let newLabel = cc.instantiate(this.testLayout.node.children[0]);
newLabel.setParent(this.testLayout.node);

let width2 = this.testLayout.node.width;                        // 391.48

실제로 위의 코드를 디버깅해보면 레이아웃에 새 아이템을 추가한 뒤 노드의 사이즈를 확인해도 이전과 달라지지 않았다.

 

만약 width2를 한 프레임(1 델타타임) 다음에 확인해보면 그때는 조정된 레이아웃의 사이즈가 나온다.

 

다음 프레임이 오기 전에 사이즈를 계산하는 과정이 있기 때문이다.

 

그러면 꼭 한 프레임을 기다린 뒤 사이즈를 구하거나, 추가한 아이템 사이즈를 통해 직접 계산을 해야 할까?

 

 

let width1 = this.testLayout.node.width;                        // 391.48
        
let newLabel = cc.instantiate(this.testLayout.node.children[0]);
newLabel.setParent(this.testLayout.node);
this.testLayout.updateLayout();                                 // 강제로 사이즈 계산 실행

let width2 = this.testLayout.node.width;                        // 489.35 (391.48 + 97.87)

Layout 컴포넌트에는 강제로 레이아웃의 사이즈를 다시 계산하도록 하는 updateLayout함수가 있다.

 

아이템을 추가하고 이 함수를 실행하면 Resize 된 레이아웃의 사이즈가 나온다.

 

 

주의할 점은, 레이아웃 노드의 active가 꺼져있는 상태에서 아이템을 추가하면

 

자동으로 Resize 함수가 실행되지 않아서 조정된 사이즈를 얻을 수 없다.

 

그리고 updateLayout 함수를 실행해도 동작하지 않는다.

 

이 경우에는 레이아웃의 active를 true로 켜주고, 또 updateLayout 함수까지 실행해야 조정된 사이즈가 나온다.

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

프리팹 안에 프리팹  (0) 2022.04.13
오브젝트 풀링 (Ojbect Pooling)  (0) 2022.04.07
좌표계 (월드 스페이스와 로컬 스페이스)  (0) 2022.04.06
[2.4.5 버그] cc.lerp  (0) 2022.04.01
클릭(터치)한 지점의 좌표 구하기  (0) 2022.03.25
    'Cocos Creator' 카테고리의 다른 글
    • 프리팹 안에 프리팹
    • 오브젝트 풀링 (Ojbect Pooling)
    • 좌표계 (월드 스페이스와 로컬 스페이스)
    • [2.4.5 버그] cc.lerp
    밀하우스 마나스톰
    밀하우스 마나스톰

    티스토리툴바