Cocos2d-x3.1下实现类似iOS页面滑动指示圆点
来源:互联网 发布:log4j打印sql日志 编辑:程序博客网 时间:2024/05/12 13:14
原文地址:http://blog.csdn.net/qqmcy/article/details/37612457
代码下载:http://download.csdn.net/detail/qqmcy/7613835
SliderIndicatorLayout.h
//// SliderIndicatorLayout.h// ht_mobile_cpp//// Created by 杜甲 on 14-7-9.////#ifndef __ht_mobile_cpp__SliderIndicatorLayout__#define __ht_mobile_cpp__SliderIndicatorLayout__#include "cocos2d.h"#include "ui/CocosGUI.h"USING_NS_CC;class SliderIndicatorLayout:public ui::Layout{ public: CREATE_FUNC(SliderIndicatorLayout); virtual bool init(); //添加指示圆点个数 void addIndicator(int num); //选中的第几个 void changeIndicator(int index); private: Size winSize; float radius; };#endif /* defined(__ht_mobile_cpp__SliderIndicatorLayout__) */
SliderIndicatorLayout.cpp
//// SliderIndicatorLayout.cpp// ht_mobile_cpp//// Created by 杜甲 on 14-7-9.////#include "SliderIndicatorLayout.h"#include "SliderIndicator.h"bool SliderIndicatorLayout::init(){ bool bRet = false; do { CC_BREAK_IF(!ui::Layout::init()); setLayoutType(cocos2d::ui::Layout::Type::VERTICAL); winSize = Director::getInstance()->getWinSize(); radius = winSize.height / 130; bRet = true; } while (0); return bRet;}void SliderIndicatorLayout::addIndicator(int num){ setSize(Size(radius * 2, radius*3 * num)); for (int i = 0 ; i < num; i++) { auto indicator = SliderIndicator::create(); indicator->setSize(Size(radius, radius)); indicator->setCircleColor(Color4B(255, 40, 255, 255)); indicator->setTag(i); addChild(indicator); auto lp_indicator = ui::LinearLayoutParameter::create(); lp_indicator->setGravity(cocos2d::ui::LinearLayoutParameter::LinearGravity::TOP); lp_indicator->setMargin(ui::Margin(0,radius * 2.0f,0,0)); if (i == 0) { lp_indicator->setMargin(ui::Margin(0, 0,0,0)); } indicator->setLayoutParameter(lp_indicator); } changeIndicator(0);}void SliderIndicatorLayout::changeIndicator(int index){ for (int i = 0; i < getChildren().size(); i++) { auto indicator = dynamic_cast<SliderIndicator*>(getChildByTag(i)); indicator->setCircleColor(Color4B(255, 40, 255, 25)); if (i == index) { indicator->setCircleColor(Color4B(255, 40, 255, 255)); } } }
SliderIndicator.h
//// SliderIndicator.h// ht_mobile_cpp//// Created by 杜甲 on 14-7-9.////#ifndef __ht_mobile_cpp__SliderIndicator__#define __ht_mobile_cpp__SliderIndicator__#include "cocos2d.h"#include "ui/CocosGUI.h"USING_NS_CC;class SliderIndicator:public ui::Layout{public: CREATE_FUNC(SliderIndicator); virtual bool init(); CC_SYNTHESIZE(Color4B, _circleColor, CircleColor); protected: void onDraw(const Mat4 &transform, bool transformUpdated); void draw(Renderer *renderer, const Mat4 &transform, bool transformUpdated); CustomCommand _customCommand;};#endif /* defined(__ht_mobile_cpp__SliderIndicator__) */
SliderIndicator.cpp
//// SliderIndicator.cpp// ht_mobile_cpp//// Created by 杜甲 on 14-7-9.////#include "SliderIndicator.h"bool SliderIndicator::init(){ bool bRet = false; do { CC_BREAK_IF(!ui::Layout::init()); bRet = true; } while (0); return bRet;}void SliderIndicator::draw(Renderer *renderer, const Mat4 &transform, bool transformUpdated){ _customCommand.init(_globalZOrder); _customCommand.func = CC_CALLBACK_0(SliderIndicator::onDraw, this,transform,transformUpdated); renderer->addCommand(&_customCommand); }void SliderIndicator::onDraw(const cocos2d::Mat4 &transform, bool transformUpdated){ Director* director = Director::getInstance(); CCASSERT(nullptr != director, "Director is null when seting matrix stack"); director->pushMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW); director->loadMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW, transform); DrawPrimitives::setDrawColor4B(_circleColor.r, _circleColor.g, _circleColor.b, _circleColor.a); DrawPrimitives::drawSolidCircle( Vec2(0,0), director->getWinSize().height / 130, CC_DEGREES_TO_RADIANS(90), 50, 1.0f, 1.0f); //end draw director->popMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW);}
0 0
- Cocos2d-x3.1下实现类似iOS页面滑动指示圆点
- cocos2d-x3.1 下实现类似Android下ExpandListView的效果
- Cocos2d-x3.0下实现循环列表
- IOS 实现边滑动边缩放的类似qq主界面的页面切换功能
- IOS 实现边滑动边缩放的类似qq主界面的页面切换功能
- IOS 实现边滑动边缩放的类似qq主界面的页面切换功能
- Mac下配置Cocos2d-x3.1环境
- 实现类似IOS中滑动按钮效果
- Android实现类似ios滑动按钮
- WINCE下实现类似iphone滑动效果
- Cocos2d-x 3.2以上版本实现滑动页面中间出现小圆点显示滑动多少页效果
- Cocos2d-x3.2 iOS下开启多点触控
- 自主实现滑动指示条
- Cocos2d-x3.2下实现 可联动的表格
- cocos2d-x3.2 多点缩放单点滑动
- 类似ios滑动开关
- ViewPager(一):带指示图标的滑动页面的实现
- cocos2d-x3.0抽奖实现
- C++ 对象模型 学习笔记(2)
- PKU 3974 - Palindrome (最长回文字串 DP)
- 2048游戏C语言代码
- BS几种技术及它们之间关系
- LWIP分析与socket编程方法
- Cocos2d-x3.1下实现类似iOS页面滑动指示圆点
- IO流--IO异常的处理方式
- 白醋美容妙妙妙!
- VirtualBox无法打开,COM对象创建失败
- 异常知识点小结
- Validation in .NET 服务器端和客户端的Trigger不同
- uva 11237 - Halloween treats(抽屉原理)
- psycopg2 ImportError: DLL load failed
- Spket在Eclipse/MyEclipse下的安装和配置(图文教程)