在cocos2dx中的“页面”(CCLayer)之间移动

时间:2013-08-28 02:58:19

标签: android ios cocos2d-iphone cocos2d-x

我有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并排包含MyGameScreenMyOtherScreen的{​​{1}}。然而,这看起来不是一种有效的方法,因为当它增长时,我可能需要将两页以上的页面并排滚动,我更愿意只在需要时加载下一页而不是整个{{1}包含所有即将到来的页面,无论用户是否会在那里滚动...你有更好的想法或github开源示例吗?

非常感谢您的投入!

2 个答案:

答案 0 :(得分:1)

使用分页启用scrollview.download文件来自以下链接并放置在cocos2d / extenision / gui /之后,必须将scrollview的属性设置为enablepaging true并使用分页视图大小。

https://github.com/shauket/paging-scrollview

答案 1 :(得分:0)

对于场景转换,您可以执行以下操作:

void MyGameScreen :: ccTouchesMoved(CCSet * touches,CCEvent * event)

{

CCScene * MyOtherScene = CCTransitionFadeUp :: create(0.2f,MyOtherScreen :: scene());

CCDirector :: sharedDirector() - > replaceScene(MyOtherScene);

}