Cocos2d-x的Slider控件

2015年03月18日 13:51 0 点赞 0 评论 更新于 2025-11-21 17:37

Cocos2d-x的Slider控件即滑块控件,常用于音乐中的音量控制。例如在Windows编程中开发音乐播放器时,就会用到滑块控件来控制音量。

准备工作

首先,需要在工程目录下的Resource文件夹中放入滑块所需的图片资源,如sliderTrack.pngsliderProgress.pngsliderThumb.png

代码实现

1. 头文件 Slider.h

Slider.h文件中添加以下代码:

#ifndef __Slider_H__
#define __Slider_H__

#include "cocos2d.h"
#include "cocos-ext.h"

USING_NS_CC;
USING_NS_CC_EXT;

class Slider : public CCLayer
{
public:
static CCScene* scene();
CREATE_FUNC(Slider);
bool init();
void ValueChanged(CCObject*, CCControlEvent);
};

#endif

2. 源文件 Slider.cpp

Slider.cpp文件中添加以下代码:

#include "Slider.h"

CCScene* Slider::scene()
{
CCScene* s = CCScene::create();
Slider* layer = Slider::create();
s->addChild(layer);
return s;
}

bool Slider::init()
{
// 初始化父类
CCLayer::init();

// 获取窗口的尺寸
CCSize winSize = CCDirector::sharedDirector()->getWinSize();

// 创建一个滑块
CCControlSlider* slider = CCControlSlider::create("sliderTrack.png", "sliderProgress.png", "sliderThumb.png");

// 添加滑块到当前层
addChild(slider);

// 设置滑块的位置,将其置于窗口中心
slider->setPosition(ccp(winSize.width / 2, winSize.height / 2));

// 设置滑块滑动范围的最小值
slider->setMinimumValue(0);

// 设置滑块滑动范围的最大值
slider->setMaximumValue(100);

// 设置滑块允许滑动的最大值,此功能常用于视频网站中的免费试看电影
slider->setMaximumAllowedValue(90);

// 设置滑块允许滑动的最小值,此功能常用于视频网站中的免费试看电影
slider->setMinimumAllowedValue(10);

// 为滑块添加响应函数,当滑块滑动时调用ValueChanged函数
slider->addTargetWithActionForControlEvents(this, cccontrol_selector(Slider::ValueChanged), CCControlEventValueChanged);

return true;
}

void Slider::ValueChanged(CCObject* sender, CCControlEvent ev)
{
// 当滑块滑动时
if (ev == CCControlEventValueChanged)
{
CCControlSlider* slider = (CCControlSlider*)sender;

// 获取滑块当前的值
float f = slider->getValue();

// 打印滑块当前的值
CCLog("current value is %f", f);
}
}

执行结果与测试

将上述代码添加到项目中并编译运行,即可看到一个位于窗口中心的滑块控件。当滑动滑块时,控制台会打印出滑块当前的值。并且滑块的滑动范围会被限制在10到90之间。

作者信息

boke

boke

共发布了 3994 篇文章