2013-08-28 52 views
0

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

非常感谢您的意见!

+0

create方法中的代码是什么?它是否会创建一个您不保留的autorelease对象? – jonynz

+0

它只是典型的CCLayer'init()'方法,我没有添加任何东西......它可以用CCTransitionScene推送......我想知道是不是因为我不调用'this-> addChild (m_pNextScreen)''但是下一个屏幕不应该是这个屏幕的子... – Zennichimaro

+0

您没有提出任何问题。你想知道什么? – LearnCocos2D

回答

0

对于场景转换,你可以这样做:

无效MyGameScreen :: ccTouchesMoved(CCSet *触摸,CCEvent *事件)

{

CCScene * MyOtherScene = CCTransitionFadeUp ::创建( 0.2f,MyOtherScreen :: scene()); CCDirector :: sharedDirector() - > replaceScene(MyOtherScene);

}

1

使用分页能够从下面的链接和地点scrollview.download文件在你的cocos2d/extenision/GUI /后你必须设置滚动型的属性enablepaging分页视图大小真。

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