마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

cocos2d-X 에서 다른 레이어 함수 호출 하는 방법

0 추천
A라는 Layer에 a라는 public 타입의 함수가 있고

A에 B라는 레이어를 addChild 했습니다.

B라는 레이어에서 A레이어에 있는 함수(a)를 호출 하고 싶은데 어떻게 해야 하는지 알고 싶습니다.

 

B에서 A에 접근 하기 위해서 상단에 include "A.h" 를 써주고 빌드 하니 에러가 나더라고요...

A와 B에 모두 init() 함수가 들어 있어서 똑같은 이름이라 충돌이 나는건지...
kwakpd (170 포인트) 님이 2014년 4월 12일 질문

1개의 답변

+1 추천
별도의 패턴을 사용하지않고, 현시점에서의 가장 직선적인 해결책은 동일한 부모(Scene과같은) 의 자식객체들이라면 dynamic_cast<CCLayer*>( getParent()->getChildByTag() ) 를 통해 원하는 레이어의 포인터를 얻는방법이있습니다.  이방법을 사용키 위해선 addChild하실때 임의의 상수 태그(const,#define) 를 지정해주셔야 합니다.

 

#include 문제는, 서로 인클루드 하고 있는지,  확인해보시는게 좋겠습니다.
익명사용자 님이 2014년 4월 12일 답변
작성시에 A에 B를 addChild했다는 문장을 못봤습니다.

B에서 A에 접근하기위해서는 A* pA = dynamic_cast< A* > ( getParent() );   pA->함수(a) ;
...