메뉴 건너뛰기

창작에 관련된 질문이나 간단한 팁, 예제를 올리는 곳

흔히 구글에서 찾아보면 다음과 같은 Clipping Layer 소스를 찾을 수 있다.

 CCEGLView::sharedOpenGLView()->setScissorInPoints(    // scissorRect is the rectangle you want to show.
        clippingRegion.origin.x + getPosition().x, clippingRegion.origin.y + getPosition().y,
        clippingRegion.size.width, clippingRegion.size.height);

중요한 것은 저 setScissorInPoints에서 받아들이는 영역이 '절대 좌표'라는 것이다.
물론 그렇기에 getPosition().x을 추가해서 해당 Layer가 이동했을 때 적절하게 클리핑하려고 했고
보통은 여기서 크게 문제를 못 느낀다.

하지만!!

만약 클리핑 될 Layer가 최상단이 아닌 누군가의 자식으로 지역 좌표를 쓰고 있다면?
예를 들어 (0,100)에 있는 레이어에서 그 레이어의 (0,100)에 새로운 레이어를 생성하고 저 클리핑을 적용하면...
100만큼 잘려 버린다. 부모의 좌표가 반영되지 않으므로...

그리므로 getPosition() 부분을 월드 좌표로 바꿔줘야
자식 노드로 레이어를 생성해도 문제 없이 클리핑을 할 수 있다.

CCPoint world_pos = convertToWorldSpace(CCPointZero);

CCEGLView::sharedOpenGLView()->setScissorInPoints(    // scissorRect is the rectangle you want to show.
        clippingRegion.origin.x + world_pos.x, clippingRegion.origin.y + world_pos.y,
        clippingRegion.size.width, clippingRegion.size.height);

태그 :
조회 수 :
670
등록일 :
2013.09.10
19:23:53 (*.75.88.173)
엮인글 :
게시글 주소 :
https://hondoom.com/zbxe/index.php?mid=study&document_srl=703178
List of Articles
번호 제목 글쓴이 날짜sort 조회 수
145 {질문}그림에대한 질문일세. [5] 슈퍼타이 2008-01-30 1703
144 흥크립트 궁금한점. [5] 장펭돌 2008-01-31 1704
143 클릭 문제.... ㄱ- [1] 장펭돌 2008-01-31 1801
142 흥크립트 질문 [1] 장펭돌 2008-02-01 1733
141 [re] 흥크립트 질문 똥똥배 2008-02-01 1782
140 흥크립트, 이건 답변 안해주신듯... [1] 장펭돌 2008-02-02 1669
139 아아, 그렇다면... 흥크립트에서 [1] 장펭돌 2008-02-02 1712
138 흥크립트 AVI 지원에서... [2] file 장펭돌 2008-02-02 1823
137 흥크립트 기본 바꾸기. [3] 장펭돌 2008-02-03 1855
136 마우스 포인터 바꾸기가 안되네요... +질문2 장펭돌 2008-02-04 1748
135 마우서 포인트 바꾸기 질문 다시 ㄱ- [2] 장펭돌 2008-02-05 1807
134 흥크립트에대해. [16] 궤레브 2008-02-06 1711
133 흥크립트 질문.. [3] 궤레브 2008-02-07 1747
132 [re] 흥크립트 질문.. [2] 똥똥배 2008-02-07 1797
131 갑자기 급질문.. 궤레브 2008-02-08 1737
130 [re] 갑자기 급질문.. [1] 똥똥배 2008-02-08 1548
129 흥크립트 개선점 흑곰 2008-02-08 1578
128 [re] 흥크립트 개선점 [3] 똥똥배 2008-02-09 1928
127 Divx6를 받아서 인코딩을 하려는데... 에러뜸... [3] 장펭돌 2008-02-09 2154
126 조건분기할 때 [5] 흑곰 2008-02-12 1745