我有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上尝试setPosition时崩溃...
我不知道为什么它崩溃,因为m_pNextScreen是一个有效的指针并且已正确初始化。有人可以解释为什么吗?
编辑:添加进度报告
我重新整理了整个系统并制作了class CContainerLayer : public cocos2d::CCLayer
并排包含MyGameScreen
和MyOtherScreen
的{{1}}。然而,这看起来不是一种有效的方法,因为当它增长时,我可能需要将两页以上的页面并排滚动,我更愿意只在需要时加载下一页而不是整个{{1}包含所有即将到来的页面,无论用户是否会在那里滚动...你有更好的想法或github开源示例吗?
非常感谢您的投入!
答案 0 :(得分:1)
使用分页启用scrollview.download文件来自以下链接并放置在cocos2d / extenision / gui /之后,必须将scrollview的属性设置为enablepaging true并使用分页视图大小。
答案 1 :(得分:0)
对于场景转换,您可以执行以下操作:
void MyGameScreen :: ccTouchesMoved(CCSet * touches,CCEvent * event)
{
CCScene * MyOtherScene = CCTransitionFadeUp :: create(0.2f,MyOtherScreen :: scene());
CCDirector :: sharedDirector() - > replaceScene(MyOtherScene);
}