我有2个MyGameScreen对象,它们扩展了cocos2d :: CCLayer。我正在捕捉第一个屏幕的ccTouchesMove,以便我可以像在iOS应用程序屏幕的页面之间滑动一样创建移动效果。在“页面”(CCLayer)之间移动cocos2dx
我的班级像这样:
class MyGameScreen: public cocos2d::CCLayer {
cocos2d::CCLayer* m_pNextScreen;
}
bool MyGameScreen::init() {
m_pNextScreen = MyOtherScreen::create();
}
void MyGameScreen::ccTouchesMoved(CCSet *touches, CCEvent *event){
// it crashes here... on the setPosition... m_pNextScreen is valid pointer though I am not sure that MyOtherScreen::create() is all I need to do...
m_pNextScreen->setPosition(CCPointMake((fMoveTo - (2*fScreenHalfWidth)), 0.0f));
}
编辑:添加清楚的问题
坠毁时,我尝试在m_pNextScreen setPosition两种...
我不知道为什么它坠毁m_pNextScreen是一个有效的指针并被正确初始化。有人可以解释为什么吗?
编辑:添加进度报告
我改造了整个系统,并作出class CContainerLayer : public cocos2d::CCLayer
包含并排两个MyGameScreen
和MyOtherScreen
侧。然而,这看起来不是一个有效的方法,因为当它增长时,我可能需要并排滚动两页以上的页面,我宁愿只在需要时加载下一页,而不是整个CContainerLayer
包含所有页面即将到来的页面,无论用户是否会在那里滚动...你有没有更好的主意或github开源样本,这样做?
非常感谢您的意见!
create方法中的代码是什么?它是否会创建一个您不保留的autorelease对象? – jonynz
它只是典型的CCLayer'init()'方法,我没有添加任何东西......它可以用CCTransitionScene推送......我想知道是不是因为我不调用'this-> addChild (m_pNextScreen)''但是下一个屏幕不应该是这个屏幕的子... – Zennichimaro
您没有提出任何问题。你想知道什么? – LearnCocos2D