Cocos2dx:实现游戏关卡PageView方式(一)

PageView实现游戏关卡:实现类似android平台下的viewpager

#ifndef __LevelLayer_SCENE_H__
#define __LevelLayer_SCENE_H__

#include "cocos2d.h"
#include "ui/CocosGUI.h"
#include "LevelBaseLayer.h"


USING_NS_CC;
using namespace cocos2d;
using namespace ui;

class WorldBaseLayer;

class LevelLayer : public Layer
{
public:
    static cocos2d::Scene* createScene();
    
    LevelLayer();
    ~LevelLayer();
    
    virtual bool init() override;

    void pageViewEvent(Ref* pSender, PageViewEventType type);
    
    CREATE_FUNC(LevelLayer);
  

    
private:

};

#endif // __LevelLayer_SCENE_H__

#include "LevelLayer.h"

USING_NS_CC;

//关卡
LevelLayer::LevelLayer(){

};

LevelLayer::~LevelLayer(){


};

Scene* LevelLayer::createScene()
{
    // 'scene' is an autorele
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现 scrollView 的无限滚动,可以通过以下步骤: 1. 创建一个 scrollView,并将其滚动方向设置为水平(或垂直)方向。 2. 在 scrollView 中添加若干个节点,这些节点将作为滚动的内容。 3. 在 scrollView 中添加两个额外的节点,它们分别是第一个节点的复制和最后一个节点的复制。这些节点将用于实现无限滚动的效果。 4. 在 scrollView 的回调函数中,判断当前滚动的位置,如果滚动到了第一个节点或最后一个节点的复制,就将 scrollView 的位置设置到对应的节点上,从而实现无限滚动的效果。 下面是一个简单的示例代码,演示了如何实现 scrollView 的无限滚动: ```c++ // 创建 scrollView auto scrollView = cocos2d::ui::ScrollView::create(); scrollView->setDirection(cocos2d::ui::ScrollView::Direction::HORIZONTAL); scrollView->setContentSize(cocos2d::Size(600, 200)); scrollView->setInnerContainerSize(cocos2d::Size(1200, 200)); addChild(scrollView); // 添加节点 for (int i = 0; i < 5; i++) { auto node = cocos2d::LayerColor::create(cocos2d::Color4B(0, 255, 0, 255), 200, 200); node->setPosition(i * 200, 0); scrollView->addChild(node); } // 添加节点的复制 auto firstNode = scrollView->getChildren().at(0); auto lastNode = scrollView->getChildren().at(scrollView->getChildrenCount() - 1); auto firstNodeCopy = firstNode->clone(); firstNodeCopy->setPosition(lastNode->getPositionX() + 200, 0); scrollView->addChild(firstNodeCopy); auto lastNodeCopy = lastNode->clone(); lastNodeCopy->setPosition(firstNode->getPositionX() - 200, 0); scrollView->addChild(lastNodeCopy); // scrollView 的回调函数 scrollView->addEventListener([=](cocos2d::Ref* sender, cocos2d::ui::ScrollView::EventType eventType) { if (eventType == cocos2d::ui::ScrollView::EventType::CONTAINER_MOVED) { auto position = scrollView->getInnerContainerPosition(); if (position.x < -200) { auto lastNode = scrollView->getChildren().at(scrollView->getChildrenCount() - 2); scrollView->setInnerContainerPosition(cocos2d::Vec2(lastNode->getPositionX() + 200, 0)); } else if (position.x > 1000) { auto firstNode = scrollView->getChildren().at(1); scrollView->setInnerContainerPosition(cocos2d::Vec2(firstNode->getPositionX() - 200, 0)); } } }); ``` 在上面的代码中,我们创建了一个水平方向的 scrollView,并添加了 5 个绿色的节点。然后,我们在 scrollView 中添加了第一个节点和最后一个节点的复制,分别为 firstNodeCopy 和 lastNodeCopy。在 scrollView 的回调函数中,我们通过判断 scrollView 的位置,来实现对滚动位置的调整,从而实现了无限滚动的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值