Cocos2d-x3.2 EditBox与ControlSlider


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

#include "cocos2d.h"

#include "cocos-ext.h"

 

USING_NS_CC_EXT;

USING_NS_CC;

 

class GameScene : public cocos2d::Layer, public EditBoxDelegate

{

public:

    static cocos2d::Scene* createScene();

     

    virtual bool init();

     

    CREATE_FUNC(GameScene);

     

    //输入委托

    void editBoxEditingDidBegin(EditBox *editBox);

    void editBoxEditingDidEnd(EditBox *editBox);

    void editBoxTextChange(EditBox *editBox, const std::string &text);

    void editBoxReturn(EditBox *editBox);

     

    //滑杆回调

    void sliderCallback(Ref *sender, Control::EventType controlEvent);

     

private:        //注意不能用auto关键字

    Size size;

    Sprite *sprite;

};

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

//  Created by Jacedy on 14-8-11.

 

#include "GameScene.h"

 

USING_NS_CC;

 

cocos2d::Scene* GameScene::createScene()

{

    auto scene = Scene::create();   //创建一个场景

    auto layer = GameScene::create();   //创建一个图层

    scene->addChild(layer);

    return scene;

}

 

//初始化当前的图层

bool GameScene::init()

{

    if(!Layer::init())      //初始化父类

        return false;

     

    //获取屏幕大小

    size = Director::getInstance()->getVisibleSize();

    //auto size = Director::getInstance()->getWinSize();

     

    Point origin = Director::getInstance()->getVisibleOrigin();

     

    auto label = Label::createWithSystemFont("Hello World""Mark Felt", 25);

    label->setPosition(Point(origin.x + size.width / 2, origin.y + size.height - label->getContentSize().height));

    this->addChild(label, 1);

     

    //EditBox

    auto inputBox = Sprite::create("YellowSquare.png");

    inputBox->setPosition(Point(size.width/2, size.height/3));

    this->addChild(inputBox, 1);

     

    EditBox *editBox = EditBox::create(Size(100, 35.0), Scale9Sprite::create());

    editBox->setPosition(Point(size.width/2, size.height/3));

    //editBox->setPlaceHolder("请输入数字");   //设置editBox输入为空时的显示状态

    editBox->setInputMode(EditBox::InputMode::NUMERIC);     //输入模式,这里设置为数字

    editBox->setDelegate(this);     //开启委托

    editBox->setFontColor(Color3B::BLACK);

    editBox->setText("0");

    editBox->setTag(10);

    this->addChild(editBox, 2);

     

    //ControlSlider

    auto slide_control = ControlSlider::create("sliderProgress.png""sliderTrack.png""sliderThumb.png");

    slide_control->setPosition(Point(size.width/2, size.height/2));

    slide_control->setMinimumValue(0.0f);       //设置最小值

    slide_control->setMaximumValue(100.0f);     //设置最大值

    slide_control->setValue(0.0f);      //设置初始值

    slide_control->setTag(20);

    //设置拖动回调

    slide_control->addTargetWithActionForControlEvents(this, cccontrol_selector(GameScene::sliderCallback), Control::EventType::VALUE_CHANGED);

    this->addChild(slide_control, 2);

     

    return true;

}

 

void GameScene::editBoxEditingDidBegin(EditBox *editBox)

{

     

}

 

void GameScene::editBoxEditingDidEnd(EditBox *editBox)

{

     

}

 

void GameScene::editBoxTextChange(EditBox *editBox, const std::string &text)

{

    int num_int = std::atoi(text.c_str());      //将字符串转成整型

    int maxNum = 100;

    if (num_int > maxNum) {

        num_int = maxNum;

    }

     

    char buf_str[16];

    sprintf(buf_str, "%d", num_int);

    editBox->setText(buf_str);      //重置editBox的值

     

    //改变ControlSlider的值

    auto slide = (ControlSlider *)this->getChildByTag(20);

    slide->setValue((float)num_int);        //重置slide的值

}

 

void GameScene::editBoxReturn(EditBox *editBox)

{

     

}

 

void GameScene::sliderCallback(Ref *sender, Control::EventType controlEvent)

{

    auto slide_control = (ControlSlider *)sender;   //通过回调参数sender获得ControlSlider

    int current_value = slide_control->getValue();      //获得slide当前的值

     

    char buf_str[16];

    sprintf(buf_str, "%d", current_value);

     

    auto editBox = (EditBox *)this->getChildByTag(10);

    editBox->setText(buf_str);

}

时间: 2024-08-31 17:36:50

Cocos2d-x3.2 EditBox与ControlSlider的相关文章

Cocos2dx 3.0 过渡篇(七)EditBox和ControlSlider不得不说的故事

尊重原创,转载请注明来自:star特530的CSDN博客  http://blog.csdn.net/start530/article/details/18993085 初八开始上班,我竟然能马上进入工作状态,真是蛮佩服自己的. 正月放假这阶段发生了好多事.对我的影响很大. 消沉了好几天,现在,我满血满状态的复活了.我是 这么容易放弃的人么?既然舍不得,就不该轻言放弃!即使希望渺茫,还是应该努力争取下! 程序员之路,就是应该克服各种艰难险阻,将不可能变成可能. ---------机智的少年,你要

cocos2d x3 6移植安卓-cocos2d-x3.6移植安卓时出现图片中错误如何解决?

问题描述 cocos2d-x3.6移植安卓时出现图片中错误如何解决? 解决方案 这是安卓的版本问题啊.你NDK设置编译的andorid17..但是androidMainfest.xml里设置的是最少 9,改下.把9改成17看看 解决方案二: 这是安卓的版本问题啊.你NDK设置编译的andorid17..但是androidMainfest.xml里设置的是最少 9,改下.把9改成17看看

cocos2d x3 0bate相关-Cocos2d-x3.0bate版,关于粒子特效

问题描述 Cocos2d-x3.0bate版,关于粒子特效 用粒子编辑器生成个.plist文件,如何在代码中加载,以及控制其开启和关闭,求大神指点

Cocosd2d实例教程(五) Cocos2d添加虚拟摇杆控制器

1.介绍 cocos2d为我们提供了好用的摇杆控制器,主要是对ZJoystick.h和ZJoystick.m的添加,实现了如下图的功能.通过摇杆可以控制图中精灵的移动.(但是还有一个技术性问题亟待解决,就是精灵移动后会有一个重影留在初始位置) 2.摇杆的实现 1) 将资源中的ZJoystick文件夹加到工程中(页面下方提供下载地址), 精灵的添加以及移动前面已经讲了,不知道的同学可以看教程四.工程名字为ControlWalking 2)修改HelloWorldLayer.h文件.加入一些需要的节

Cocosd2d实例教程(三) Cocos2d瓦片地图的导入

上一节讲了如何使用Tiled制作瓦片地图,下面讲一下如何将地图导入游戏中. 第一步:将生成的文件导入resource中,如图,分别为地图和图片集 第二步:在HelloWorldLayer.h中修改代码,有一定基础的人还是比较好理解的. #import <GameKit/GameKit.h> // When you import this file, you import all the cocos2d classes #import "cocos2d.h" // Hello

【Cocos2d-x】开发实战-Cocos中的字符串、标签和中文乱码

本篇博客讲解: 1.Ccocos2d-x中的字符串 2.使用标签 3.中文乱码问题 Ccocos2d-x中的字符串 使用const char和stdstring 使用cocos2d__String 数据类型之间的转换 Win32平台下中文乱码问题 解决方法一 解决方法二 解决方法三 使用标签 LabelTTF LabelAtlas LabelBMFont Cocos2d-x 3x标签类Label 标签中文乱码问题 源代码下载地址 Ccocos2d-x中的字符串 使用const char*和std

cocos2d-x3.0中数据类型vector,map、value

在3.0中,已经不再使用以前的ccarray,ccdictionary,ccint等从以前的oc继承过来的数据类型,转而加入了自己的数据结构,更加符合c++的开发习惯和思考模式,其中就包括了vector,map和value这三种.今天刚好自己研究了相关的源代码,可以结合分析下. vector就相当于以前的ccarray,对c++的vector做了适当的包装,在一些赋值,释放等相关操作加入了引用计数相关的内存释放操作,使得我们在使用不再需要自己添加retain,release,autoreleas

Cocos2d-x3.2 EditBox的使用

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #include "cocos2d.h"   //引入头文件和命名空间 #include "extensions/cocos-ext.h" USING_NS_CC_EXT;   USING_NS_CC;   class GameScene : public cocos2d::L

【COCOS2D-HTML5 开发之一】新建HTML5项目及简单阐述与COCOS2D/X引擎关系

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/cocos2d-html5/1463.html             真的是有一段时间没写博了,这段时间呢,发生的事情真的挺多,另外自己呢也闲来做了一些自己的喜欢的东西,主要做的还是基于Mac系统的Cocoa框架的各种编辑器吧.(对了,今年初也出了自己第二本书<iOS游戏编程之从零开始-Cocos2d-x与cocos2d引擎游戏开发>)