各位大侠,求教:
现在我的Scene里添加了两个层(Layer),一个用于界面与精灵绘制的GameLayer,一个用于绘制控制柄以及接收触屏事件的OperateLayer。
很显然GameLayer负责精灵Sprite的各种动作绘制,所以初始化了CC_SYNTHESIZE_READONLY(Sprite*,m_pHero,Hero),并绑定了精灵移动事件m_pHero->walk = CC_CALLBACK_2(GameLayer::onHeroWalk,this);
那现在我OperateLayer接收到触屏事件后,要令精灵移动,也就是调用GameLayer::onHeroWalk函数,而该函数既然绑定了m_pHero->walk,只要在调用m_pHero->walk()即可,所以我在OperateLayer.h同样初始化CC_SYNTHESIZE(Sprite*,m_pHero,Hero),为了能操作m_pHero。
问题来了,操作层OperateLayer里调用m_pHero->walk()引发内存泄露,因为在两个层里初始化的CC_SYNTHESIZE(Sprite*,m_pHero,Hero)不互通。
OperateLayer→调用m_pHero->walk()→绑定了GameLayer::onHeroWalk 行不通
OperateLayer究竟如何调用到GameLayer的函数?