【问题标题】:Moving between "pages" ( CCLayer ) in cocos2dx在 cocos2dx 中的“页面”(CCLayer)之间移动
【发布时间】:2013-08-28 02:58:19
【问题描述】:

我有 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,它并排包含MyGameScreenMyOtherScreen。但是,这看起来不是一种有效的方法,因为当它增长时,我可能需要并排滚动超过 2 个页面,我宁愿仅在需要时加载下一页,而不是整个 CContainerLayer包含所有即将出现的页面,无论用户是否会滚动到那里...您有更好的想法或 github 开源示例吗?

非常感谢您的意见!

【问题讨论】:

  • create 方法中的代码是什么?它会创建一个您不保留的自动释放对象吗?
  • 就是典型的CCLayer init() 方法,我什么都没加。。。用CCTransitionScene推送就可以了。。。不知道是不是因为我没有调用this->addChild(m_pNextScreen) 但下一个屏幕不应该是这个屏幕的子屏幕...
  • 你没有问问题。你想知道什么?

标签: android ios cocos2d-iphone cocos2d-x


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    {

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

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

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多