1
스프라이트 밖에있는 터치를 처리해야합니다. 즉 스프라이트 외부를 터치하면 스프라이트의 touchBegan 메서드를 호출해야합니다. 내가 어떻게 해?cocos2d 3.x 스프라이트 외부의 터치 처리 방법
3.x 버전을 사용 중이므로 CCTargetedTouchDelegate 우선 순위가 더 이상 존재하지 않는다는 것에 유의하십시오.
스프라이트 밖에있는 터치를 처리해야합니다. 즉 스프라이트 외부를 터치하면 스프라이트의 touchBegan 메서드를 호출해야합니다. 내가 어떻게 해?cocos2d 3.x 스프라이트 외부의 터치 처리 방법
3.x 버전을 사용 중이므로 CCTargetedTouchDelegate 우선 순위가 더 이상 존재하지 않는다는 것에 유의하십시오.
나는 수동으로 터치 섭취 여부를 반환하는 공공 방법 ccTouchBegan 만드는 것입니다 제안 무엇 (처럼을적인 Cocos2D 2.0) 캔버스에
:- (void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
BOOL swallowed = NO;
for (id child in _childNodes) {
if ([child ccTouchBegan:touch event:event]) {
swallowed = YES;
}
}
if (swallowed) {
return;
}
//continue the canvas touch handler
}
와 스프라이트의 :
- (BOOL)ccTouchBegan:(UITouch *)touch event:(UIEvent *)event {
//same usage as cocos2d 2.x
}
//and in the touch callback
- (void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
if ([self ccTouchBegan:touch event:event]) {
//swallow
}
else {
//do not swallow, pass the touch
[super touchBegan:touch withEvent:event];
}
}
천재 솔루션. – OMGPOP
터치가 스프라이트에 *있을 때만 터치가 수신되는지 확실합니까? 이것이 사실이라면, 해결책은 장면에 터치 이벤트를 추가하고 필요에 따라 메시지를 스프라이트에 전송하는 것입니다. – LearnCocos2D
@ LearnCocos2D 네, touch가 sprite에있을 때만 호출됩니다. sprite는 cocos2d 2.x와는 다릅니다. 스프라이트 클래스에서 직접 콜백을받을 수있는 방법이 있습니까? 나는 장면과 스프라이트를 결합하는 것을 좋아하지 않는다. – OMGPOP
모르겠다. 처음으로 나는이 행동이 바뀌 었다고 들었다. 참조를 유지할 필요는 없지만 장면에서 NSNotification을 보내고 Sprite를 알림 수신기로 등록하십시오. – LearnCocos2D