2014-04-14 3 views
2

확인 일 :이상한 점은이 코드를 가지고, 투명 테두리 SKSpriteNode으로

 SKSpriteNode *flagTile = [((BGSKView *) self.skView).tileSprites[@"flag"] copy]; 
     flagTile.anchorPoint = CGPointZero; 
     flagTile.size = touchedNode.size; 
     flagTile.name = @"flag"; 

     [touchedNode addChild:flagTile]; 

사용자가 필드 (AN SKSpriteNode) 그것의 아이들에게 또 하나 개의 스프라이트 추가 탭 - 플래그 노드를. touchedNode 텍스처 크기가 80x80, 플래그 텍스처가 80x80 ... 완전히 동일하지만 플래그 텍스처에 투명 테두리가있는 것이 가장 큰 차이점입니다. 여기

:

enter image description here

그러나 이상한 일이 발생합니다 플래그 노드가 항상 있다 자사의 실제 touchedNode보다는 지역 작은 (호출 "tappable"수)과 그 위치는 현물입니다 이상한 것.

과 같이 : 내 모든 레이어의

enter image description here

구조 다음과 같이 있습니다 : compoundNode 두 레이어 포함 - 전체 트리의 크기 조정이 엑스 스케일이 필요하고 yScale이 (compoundNode을 설정할 때와 B.). 크기가 다른 조작은 없습니다.

내가 뭘 잘못하고 있니?

정말로 필요한 것은 flagTile 가능한 영역을 touchedNode의 크기가되도록하는 것입니다. 그리고 하나 더 :이 하나

SKSpriteNode *flagTile = [((BGSKView *) self.skView).tileSprites[@"flag"] copy]; 

: 나는 대체하는 경우는

SKSpriteNode *flagTile = [SKSpriteNode spriteWithColor:[UIColor clearColor] size:touchedNode.size]; 

그것을 잘 작동합니다.

clearColor 스프라이트를 만든 후에도 텍스처 속성을 변경하려고 시도했지만 아무것도 작동하지 않습니다.

감사합니다.

답변

2

SKSpriteNode *flagTile = [((BGSKView *) self.skView).tileSprites[@"flag"] copy]; 명령은 스프라이트를 생성하지만 플래그 주위의 보이지 않는 부분은 무시합니다. 내 이미지 편집기 (Adobe Fireworks)에서 깃발 이미지를 열고 플래그를 선택하면 실제 플래그 rect 만 선택됩니다 (내가 게시 한 이미지를보십시오).

내가 생각할 수있는 유일한 대안은 크기가 80,80 인 플래그 뒤에 흰색 (또는 원하는 색)을 추가하는 것입니다. 그런 다음 사각형의 알파를 완전히 위의 1 포인트로 설정합니다. 나는 이것이 전체 80x80 이미지가 감동 될 수 있어야한다고 생각한다.

enter image description here

+0

와우! 고마워요,하지만이게 정말 유일한 해결책입니까? 국경과 추가 색상이없는 투명 이미지를 사용해야하는 복잡한 그래픽이 있다면 어떨까요? – AndrewShmig

+2

모두 코드 구조에 따라 다릅니다. 당신이 할 수있는 몇 가지가 있습니다. 알파 + 1 레이어를 사용하는 대신 대각선 모서리에 작은 점을 넣을 수 있습니다. 또 다른 클리너 옵션은 스프라이트 노드를 그대로 사용하고 터치하는 것을 처리하기 위해 더 큰 보이지 않는 노드를 추가하는 것입니다. – sangony

+0

깃발 이미지를 사용하여 깃발의 알파를 만들 수 있습니다.이 깃발은 검은 색 바탕에 하얀 깃발이 있어야합니다. 그런 다음 포토샵에서 이것을 결합하여 32 비트 PNG 파일을 만들 수 있습니다. 기본 플래그를 단색 배경에 두는 것이 가장 좋습니다. 색상은 알파에 의해 제거되므로 중요하지 않습니다. 그런 식으로 코너 도트로 끝나지 않고 크기 조정이 전체 이미지 (투명 픽셀 없음)에서 수행됩니다. – fuzzygoat

1

내가 두 모서리에 두 개의 점을 추가하여 내 문제를 해결 한 (왼쪽 하단과 오른쪽 상단) 1 %로 설정 불투명도 그것은 큰 일했습니다.