cocos2dx循环滚动视图

由于项目需求大厅里的牌子要循环滚动(tips:这样看起来东西比较多,其实是个挺搞笑的需求),cocos本身的控件不满足需求,所以就简单写了个。目前惯性减速不太好用,有更好解决方案的大拿给个提示啊!

GitHub链接
代码如下:

//
//  ScrollCircle.hpp
//  ScrollSelector-mobile
//
//  Created by 徐家伟 on 2018/1/19.
//

#ifndef CycleScroll_hpp
#define CycleScroll_hpp

#include "cocos2d.h"
#include "cocos-ext.h"
#include <vector>

#define MIN_SCROLL_SPEED 1
#define MAX_SCROLL_SPEED 30

class CycleScroll: public cocos2d::LayerColor
{
    CycleScroll();
public:
    static CycleScroll* create(cocos2d::Size &size, std::vector<cocos2d::Node*> nodes, float distance, float minScale = 1.0f);
    void ScrollTo(int index, float delay);
    void setDisplaySize(const cocos2d::Size &size);
    const cocos2d::Size& getDisplaySize() const;

private:
    float minScale;
    float spaceDistance;
    int currentIndex;
    cocos2d::Size disSize;
    cocos2d::ClippingNode* clipNode;
    std::vector<cocos2d::Node*> nodes;

    // 减速使用
    bool dragging;
    bool autoScrolling;
    float scrollDistance;
    float startTime;
    cocos2d::Vec2 startPos;

    bool onTouchBegin(cocos2d::Touch *touch, cocos2d::Event *unused_event);
    void onTouchMove(cocos2d::Touch *touch, cocos2d::Event *unused_event);
    void onTouchEnd(cocos2d::Touch *touch, cocos2d::Event *unused_event);
    void updateNodePosX(float interval);

    virtual 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值