我正在阅读Ray Wenderlich 的Android 空间游戏教程。很棒的教程。我是一名中级 C++ 程序员,我试图了解这里发生了什么。只是为了理解我已经重写了它。删除宏。
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;
}
}
}
我的疑问:
- 当点初始化时(通过将 CCObject* 转换为 CCPointObject*),如何将 m_tOffset、m_tRatio 和 m_pChild 初始化为该对象的偏移量和比率的实际值?
- 我已经在 CCPointObject 的 setOffset/getOffset 函数中给出了 CCLogs,但它们从未被调用过,所以调用了哪个 setOffset/getOffset?由于 CCPointObject 是从 CCObject 继承的,所以我想,可能是 CCObject 的 setOffset/getOffset 正在被调用,但是,正如我所检查的,CCObject 中没有声明 setOffset/getOffset。
我查看了 ccParallaxNode.h 及其那里,
//保存孩子的偏移量/比率的数组
CC_SYNTHESIZE(struct _ccArray *, m_pParallaxArray, ParallaxArray)
并且 _ccArray 有 CCObject** 这意味着 CCObjects 和 CCObject 的数组没有任何变量,如 m_tOffset/m_tRatio 或 m_pChild 所以,偏移量/比率实际存储在哪里?
这些疑虑让我发疯。请帮忙 !!