이것은 약간의 설명이 필요하지만 여기서는 약간의 통찰력을 고맙게 생각합니다.CCSpatch가 CCBatchNode의 하위 노드 인 터치 가능한 CCNode를 생성하는 데 문제가 있습니다.
짧은 버전 : CCSprite 이미지가 다른 클래스의 CCSpriteBatchNode의 자식 인 TouchableButton (자체 터치로 감지)을 만드는 방법은 무엇입니까? 일반적으로 CCSprite는 TouchableButton 자체의 자식입니다.
긴 버전 :
내가적인 Cocos2D를 사용하여 게임을 짓고 있어요. 이 게임은 서로 뛰고 서로 상호 작용하는 에이전트 (클래스 AgentView : CCNode)로 가득 찬 풍경 (클래스 EnvironmentView : CCLayer)에 중점을 둡니다.
EnvironmentView는 AgentView 객체 목록을 유지 관리하고 필요에 따라 (상호 작용 방식에 따라) 객체를 작성/삭제합니다.
각 AgentView에는 CCBatchNode (EnvironmentView의 @property)의 하위 뷰로 추가되는 CCSprite @property가 있으며 이는 EnvironmentView의 하위 노드로 추가됩니다.
사용자가 상담원을 만져서 가로에서 한 위치에서 다른 위치로 이동할 수있는 기능을 구현하려고합니다.
환경보기에서 주위를 돌아 다니는 많은 에이전트가 있기 때문에 터치 위치를 얻고 모든 AgentView CCSprites를 반복하는 표준 접근법을 사용하여 터치가 그들 중 하나에 도달 하는지를보고 싶지는 않습니다. 이 접근 방식을 홍보하는 답변에는 관심이 없습니다.)
대신 각 AgentView를 터치 할 수있는 노드 (터치했을 때 말한 노드가 아니라 터치 한 경우를 알고있는 노드)로 만들고 싶습니다.
기본적으로 각 AgentView의 CCSprite를 TouchableButton 객체로 대체하거나 보완하고 싶습니다.
내 게임의 UI 관련 버튼에이 방법을 사용하는 클래스 (TouchableButton이라고 부름)를 사용하고 있는데, 부모 레이어에 CCTouchesBegan 메소드를 구현하지 않고 터치 한 시점을 알고 있습니다. 하지만이 유스 케이스에 TouchableButton을 적용 할 수 없었던 이유는 다음과 같습니다.
TouchableButtons는 초기화 매개 변수로 CCSprite를 사용합니다. 이 CCSprite는 버튼의 손댈 수있는 부분으로 설정되며 버튼 자체의 자식으로 추가됩니다. 왜냐하면 나는 CCFLrite를 EnvironmentView에있는 CCSpriteBatchNode의 자식으로 추가하기 때문에 (두 개의 다른 부모 객체에 자식을 두 번 추가 할 수 없다) 오류가 발생한다. 이 갈등을 피하기 위해 어떻게 구조화 할 수 있습니까?
미리 도움을 청하십시오!
+1 자세한 설명과 서식을 지정하십시오! – Kheldar