cocos2dx基础篇(9) 滑块控件CCControlSlider

滑块控件CCControlSlider,应该也是很常见的UI控件,想必大家都不陌生。

    比如调节音量的大小:

1、CCControl主要向滑块类CCControlSlider提供了以下控件事件

 
  1. //

  2. CCControlEventValueChanged //当控件的值发生改变时触发。

  3. //

2、绑定控件事件的方法

 
  1. //

  2. //绑定控件事件

  3. //addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::valueChanged), CCControlEventValueChanged);

  4. void addTargetWithActionForControlEvents(CCObject* target, SEL_CCControlHandler action, CCControlEvent controlEvents);

  5.  
  6. //删除控件事件

  7. //removeTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::valueChanged), CCControlEventValueChanged);

  8. void removeTargetWithActionForControlEvents(CCObject* target, SEL_CCControlHandler action, CCControlEvent controlEvents);

  9. //

3、需要引用一下的文件及命名空间

 
  1. //

  2. #include "cocos-ext.h" //包含cocos-ext.h头文件

  3. using namespace cocos2d::extension; //引用cocos2d::extension命名空间

  4. //

4、常用操作

 
  1. //

  2. class CCControlSlider: public CCControl

  3. {

  4. /**

  5. * 创建CCControlSlider的两种方式

  6. */

  7. //用CCSprite精灵创建滑块控件

  8. //create("滑块背景图", "划过区域图", "滑块图");

  9. static CCControlSlider* create(CCSprite* backgroundSprite, CCSprite* pogressSprite, CCSprite* thumbSprite);

  10.  
  11. //直接用图片资源名创建,省去了创建精灵的步骤

  12. //实际上,在其内部依旧是调用上面的create函数创建CCSprite精灵

  13. //create("滑块背景图", "划过区域图", "滑块图");

  14. static CCControlSlider* create(const char* bgFile, const char* progressFile, const char* thumbFile);

  15.  
  16.  
  17. /**

  18. * 属性设置

  19. * setValue ,

  20. * setMinimumValue , setMaximumValue

  21. * setMinimumAllowedValue , setMaximumAllowedValue ,

  22. * setBackgroundSprite , setProgressSprite , setThumbSprite

  23. */

  24. float setValue() | getValue(); //设置当前滑块的值

  25. float setMinimumValue() | getMinimumValue(); //设置滑块最小值

  26. float setMaximumValue() | getMaximumValue(); //设置滑块最大值

  27. float setMinimumAllowedValue() | setMinimumAllowedValue(); //设置允许滑动的最小值

  28. float setMaximumAllowedValue() | setMaximumAllowedValue(); //设置允许滑动的最大值

  29.  
  30.  
  31. //设置滑块的背景图、划过区域图、滑块图

  32. //CC_SYNTHESIZE_RETAIN为宏定义:除了创建了set/get以外,还用了retain来保留内存资源。

  33. CC_SYNTHESIZE_RETAIN(CCSprite*, m_backgroundSprite, BackgroundSprite);

  34. CC_SYNTHESIZE_RETAIN(CCSprite*, m_progressSprite, ProgressSprite);

  35. CC_SYNTHESIZE_RETAIN(CCSprite*, m_thumbSprite, ThumbSprite);

  36. };

  37. //

5、滑块的值、最值、允许最值解析

    假设滑块的属性值设置如下:

        Value = 40;

        MinimumValue = 0;         MaximumValue = 100;

        MinimumAllowedValue = 20; MaximumAllowedValue = 80;

    那么滑块只能在Allowed的最小值和最大值之间滑动,即[20,80]的数值之间滑动。


【代码实战】

1、资源图片

2、引入文件和命名空间

 
  1. //

  2. #include "cocos-ext.h" //包含cocos-ext.h头文件

  3. using namespace cocos2d::extension; //引用cocos2d::extension命名空间

  4. //

3、在HelloWorld.h中声明控件回调函数、显示滑块数值的Label

 
  1. //

  2. CCLabelTTF* label; //显示滑块数值的Label

  3.  
  4. void valueChanged(CCObject* sender, CCControlEvent controlEvent); //当值改变时触发的控件事件

  5. //

4、在HelloWorld.cpp中创建滑块控件,并绑定ValueChanged控件事件

 
  1. //

  2. //创建显示Slider值的标签

  3. label = CCLabelTTF::create("50.0", "Arial", 32);

  4. label->setPosition( midPos + ccp(0, 100) );

  5. this->addChild(label);

  6.  
  7.  
  8. //创建滑块控件CCControlSlider

  9. CCControlSlider* slider = CCControlSlider::create("sliderTrack.png", "sliderProgress.png", "sliderThumb.png");

  10. slider->setPosition( midPos );

  11. this->addChild(slider);

  12.  
  13. //设置属性

  14. slider->setMinimumValue(0); //设置滑块最小值

  15. slider->setMaximumValue(100); //设置滑块最大值

  16. slider->setMinimumAllowedValue(20); //设置允许滑动的最小值

  17. slider->setMaximumAllowedValue(80); //设置允许滑动的最大值

  18. slider->setValue(50); //设置当前滑块的值

  19.  
  20. //绑定事件,当滑块的值改变时触发控件事件

  21. slider->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::valueChanged), CCControlEventValueChanged);

  22. //

5、实现控件回调函数

 
  1. //

  2. //事件响应函数,值改变时,修改label标签的内容

  3. void HelloWorld::valueChanged(CCObject* sender, CCControlEvent controlEvent)

  4. {

  5. //获取事件委托者:滑块控制CCControlSlider

  6. CCControlSlider* slider = (CCControlSlider*)sender;

  7.  
  8. //修改label的值,显示滑块的当前值

  9. //sprintf为C语言中的字符串格式转换,这里将float转换为字符串

  10. char str[50];

  11. sprintf(str, "%f", slider->getValue() ); //字符串格式转换

  12. label->setString(str);

  13. }

  14. //

6、运行结果

wKioL1P0ZbPxkNV9AAbOX_Zxjh8042.gif

7、分析与总结

        滑块只能在Allowed的最值之间滑动。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: cocos2d-x js是一个开源的游戏开发引擎,用于开发跨平台的2D游戏,它使用JavaScript作为脚本语言。以下是对cocos2d-x js的回答。 cocos2d-x js是cocos2d-x引擎的JavaScript版本,它继承了cocos2d-x引擎强大的功能和性能,同时提供了使用JavaScript编写游戏的便利性。 cocos2d-x js通过使用JavaScript脚本语言进行游戏开发,使得开发者可以更加方便地编写游戏逻辑和动作表现。JavaScript是一种简单易用的脚本语言,对于不熟悉复杂编程语言的开发者来说,使用JavaScript进行游戏开发会更加容易上手。 cocos2d-x js提供了丰富的游戏功能和API,包括精灵动画、物理引擎、碰撞检测、场景管理等,这些功能可以帮助开发者快速构建2D游戏。同时,cocos2d-x js还提供了跨平台的支持,可以将游戏轻松移植到不同的平台上,如iOS、Android、Windows等。 除了基本的功能和API,cocos2d-x js还支持插件和扩展,开发者可以根据自己的需求进行扩展和定制,以满足游戏的特殊需求。 总结来说,cocos2d-x js是一个强大而灵活的游戏开发引擎,它提供了使用JavaScript进行游戏开发的便利性,同时具备跨平台的支持和丰富的功能和API。无论是初学者还是有经验的开发者,都可以通过cocos2d-x js来快速构建出高质量的2D游戏。 ### 回答2: Cocos2d-x是一款强大的跨平台游戏开发引擎,具有许多独特而且强大的功能。cocos2d-x jsCocos2d-x引擎的JavaScript版本,它可以让开发者使用JavaScript编写游戏逻辑和界面。 使用Cocos2d-x js,开发者可以轻松地创建2D游戏,并在多个平台上运行,如iOS、Android、Windows和Web。这意味着开发者只需编写一次代码,就可以发布到多个平台,大大提高了开发效率。 cocos2d-x js提供了丰富的API和功能,使得开发复杂的游戏变得轻松。它包括图形渲染、动画系统、物理引擎、碰撞检测、音频管理等功能,开发者可以利用这些功能创建出丰富多样的游戏体验。 此外,cocos2d-x js还支持现代开发工具和技术,如可视化编辑器Cocos Creator,可实时调试和热更新等。开发者可以使用Cocos Creator创建游戏场景、编辑动画、创建粒子效果等。同时,Cocos2d-x js还集成了调试工具,方便开发者进行错误排查和优化。 总之,Cocos2d-x js是一个非常强大且灵活的游戏开发引擎。它提供了广泛的功能和工具,使得开发者能够快速创建高质量的2D游戏,并在多个平台上发布。无论是初学者还是有经验的开发者,都可以通过Cocos2d-x js轻松实现独特而丰富的游戏体验。 ### 回答3: Cocos2d-x js是一种使用Javascript编写的跨平台游戏开发框架。它是基于Cocos2d-x引擎的扩展,可以在多个平台上运行,包括iOS、Android、Windows和Mac等。 Cocos2d-x js提供了丰富的游戏开发工具和功能,可以帮助开发人员轻松创建高质量的游戏应用。它具有优秀的性能和灵活性,并且能够快速部署到各种平台上。 使用Cocos2d-x js,开发人员可以使用熟悉的Javascript语言进行游戏开发,而无需学习其他编程语言。它提供了一系列API和组件,例如精灵、动作、节点和场景等,以简化游戏的创建和管理过程。 此外,Cocos2d-x js还提供了多种功能,如物理引擎、碰撞检测、音效播放和动画效果等,可以帮助开发人员实现各种游戏特效和交互效果。 Cocos2d-x js还支持一些常用的开发模式和工具,如游戏UI编辑器、游戏调试器和性能分析器等,方便开发人员进行游戏开发和调试。 总之,Cocos2d-x js是一款功能强大、易于使用并且跨平台的游戏开发框架。无论是新手还是经验丰富的开发人员,都可以借助它来创建出令人印象深刻的游戏应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值