나는 안드로이드에 대한 Ray Wenderlich's Space Game 튜토리얼을 통해 가고있었습니다. 위대한 튜토리얼. 저는 중급 C++ 프로그래머이며 여기에서 무슨 일이 일어나고 있는지 이해하려고합니다. 그냥 이해하고 다시 작성했습니다. 매크로 제거.RayWenderlich의 CCParallaxNodeExtras.h에 대한 설명
class CCPointObject: CCObject
{
protected:
CCPoint m_tRatio;
CCPoint m_tOffset;
CCNode *m_pChild;
public:
virtual CCPoint getRatio() const
{
CCLog("getRatio_CALLED");
return m_tRatio;
}
virtual void setRatio(CCPoint newRatio)
{
CCLog("setRatio_CALLED");
m_tRatio = newRatio;
}
.
..
...
// similarly getChild/setChild/getOffset/setOffset is defined. The code works perfectly fine.
};
void CCParallaxNodeExtras::incrementOffset(CCPoint offset,CCNode* node)
{
for(unsigned int i = 0; i < m_pParallaxArray->num; i++)
{
CCPointObject *point = (CCPointObject *)m_pParallaxArray->arr[i];
CCNode * curNode = point->getChild();
if(curNode->isEqual(node))
{
point->setOffset(ccpAdd(point->getOffset(), offset));
break;
}
}
}
올시다 :
- 포인트 m_tOffset, m_tRatio 및 m_pChild가 해당 개체의 오프셋 및 비율의 실제 값으로 초기화하는 방법, (CCPointObject *를 위해 CCObject의 * 캐스팅에 의해) 초기화 될 때?
- 나는 CCPointObject의 setOffset/getOffset 함수에서 CCLogs를 주었지만 결코 호출되지 않았으므로 어떤 setOffset/getOffset이 호출 되었습니까? CCOointject는 CCObject에서 상속 받았기 때문에 CCObject의 setOffset/getOffset이 호출되고 있을지도 모르겠지만, 내가 확인한 것처럼 CCObject에 선언 된 setOffset/getOffset은 없습니다.
제가
, ccParallaxNode.h에보고 및 거기 // 어린이의 오프셋/비 보유 어레이
CC_SYNTHESIZE (구조체 _ccArray *를 m_pParallaxArray, ParallaxArray)
및 _ccArray에는 CCObjects의 배열을 의미하는 CCObject **가 있고 CCObject에는 m_tOffset/m_tRatio 또는 m_pChild와 같은 변수가 없으므로 실제로 오프셋/비율이 저장되는 위치는 무엇입니까?
이러한 의문이 나를 미치게합니다. 도와주세요 !!
많은 많은 감사합니다 Souandios, 그 많은 도움이되었습니다. – BitKnight
이제 CCparallaxNode.cpp를 살펴보면 CCPointObject 클래스가 있고 실제로 m_pParallaxArray는 CCPointObject를 저장합니다. 내가 이해할 수없는 것은 CCPointObject가 CCParallaxNodeExtras에서 보이지 않는다는 것입니다.cpp는 액세스를 얻기 위해 데이터 멤버를 동일하게 유지하는 다른 CCPointObject를 선언합니다 (변수 이름도 동일하지만 멤버 함수가 정확히 동일하지 않음). 그리고 캐스팅 한 후 원래 CCPointObject의 객체를 제공합니다. 내말은, 우리가 그걸 정말로 할 수 있을까? 같은 이름과 데이터 멤버를 가진 클래스를 다시 정의하고 원본 개체를 가져 오기 위해 형 변환합니다. – BitKnight
그게 내가 모르는 C++의 개념인가? 우리가 이것을 할 수 있다면 전체 클래스 (멤버 함수 포함)의 구조가 같아서는 안됩니다. – BitKnight