我有 2 个扩展 cocos2d::CCLayer 的 MyGameScreen 对象。我正在捕获第一个屏幕的 ccTouchesMove,以便我可以创建与 iOS 应用程序屏幕页面之间滑动完全相同的移动效果。
我的课是这样的:
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 上设置位置时它崩溃了......
我不知道它为什么会崩溃,因为 m_pNextScreen 是一个有效的指针并且已正确初始化。有人可以解释为什么吗?
编辑:添加进度报告
我改造了整个系统并制作了一个class CContainerLayer : public cocos2d::CCLayer
包含MyGameScreen
并排的系统MyOtherScreen
。但是,这看起来不是一种有效的方法,因为当它增长时,我可能需要并排滚动超过 2 个页面,我宁愿仅在需要时加载下一页而不是CContainerLayer
包含所有即将到来的页面,无论用户是否会滚动到那里......你有什么更好的想法或 github 开源示例可以做到这一点?
非常感谢您的意见!