1cocos2dx扩展库UI控件,CCControlSlider,CCScale9Sprite(九妹图),CCControlSwitch,CCControlButton

1cocos2dx扩展库UI控件,CCControlSlider,CCScale9Sprite(九妹图),CCControlSwitch,CCControlButton,第1张

概述 UI控件来自cocos2dx的扩展库,完善了UI方面的元素,使cocos2dx更加丰富多彩。使用扩展库需包含: #include “cocos-ext.h” USING_NS_CC_EXT; CCControlSlider CCControlSlider * slider = CCControlSlider::create(“sliderTrack.png”,”sliderProgress. 

UI控件来自cocos2dx的扩展库,完善了UI方面的元素,使cocos2dx更加丰富多彩。使用扩展库需包含:

#include “cocos-ext.h”

USING_NS_CC_EXT;

CCControlSlIDer

CCControlSlIDer * slIDer = CCControlSlIDer::create(“slIDerTrack.png”,”slIDerProgress.png”,”slIDerThumb.png”);

第一个参数表示,slIDer滑动的轨道,即背景色。第二个参数表示滑动的进度。第三个参数表示拖动的按钮。

slIDer->setMaximumValue(2.0f); //设置滑动最大值

slIDer->setMinimumValue(0.0f); //设置滑动最小值

slIDer->setValue(0.5f); //设置默认值

slIDer->setMaximumAllowedValue(1.2f); //设置某一个范围内的最大值

slIDer->setMinimumAllowedValue(0.3f); //设置某一个范围内的最小值

slIDer->addTargetWithActionForControlEvents(this,

cccontrol_selector(T12UI::controlCallback),

CCControlEventValueChanged);

设置事件的响应函数

typedef unsigned int CCControlEvent;

typedef voID (CCObject::*SEL_CCControlHandler)(CCObject*,CCControlEvent);

#define cccontrol_selector(_SELECTOR)(SEL_CCControlHandler)(&_SELECTOR);

关于CCControlEvent

/** Kinds of possible events for the control objects. */

enum

{

CCControlEventtouchDown = 1 << 0, // A touch-down event in the control.

CCControlEventtouchDragInsIDe = 1 << 1, // An event where a finger is dragged insIDe the bounds of the control.

CCControlEventtouchDragOutsIDe = 1 << 2, // An event where a finger is dragged just outsIDe the bounds of the control.

CCControlEventtouchdragenter = 1 << 3, // An event where a finger is dragged into the bounds of the control.

CCControlEventtouchDragExit = 1 << 4, // An event where a finger is dragged from within a control to outsIDe its bounds.

CCControlEventtouchUpInsIDe = 1 << 5, // A touch-up event in the control where the finger is insIDe the bounds of the control.

CCControlEventtouchUpOutsIDe = 1 << 6, // A touch-up event in the control where the finger is outsIDe the bounds of the control.

CCControlEventtouchCancel = 1 << 7, // A system event canceling the current touches for the control.

CCControlEventValueChanged = 1 << 8 // A touch dragging or otherwise manipulating a control,causing it to emit a serIEs of different values.

};

typedef unsigned int CCControlEvent;

slIDer案例说明:

T12UI.h

#ifndef __T12UI_H__

#define __T12UI_H__

#include "cocos2d.h"

#include "TBack.h"

#include "cocos-ext.h"

USING_NS_CC;

USING_NS_CC_EXT;

class T12UI :public TBack

{

public:

static CCScene * scene();

CREATE_FUNC(T12UI);

bool init();

cclabelAtlas * atlas;

//slIDer的回调函数

voID slIDerCallBack(CCObject* sender,CCControlEvent event);

};

#endif

T12UI.cpp

#include "T12UI.h"

#include "AppMacros.h"

#include "SimpleAudioEngine.h"

using namespace CocosDenshion;

CCScene *T12UI::scene()

{

scene = CCScene::create();

T12UI * layer = create();

scene->addChild(layer);

return scene;

}

//UI控件来自cocos2dx的扩展库,完善了UI方面的元素,使cocos2dx更加丰富多彩。使用扩展库需要包含

bool init()

{

TBack::init();

//第一个参数表示slIDer滑动的轨道,即背景色。第二个参数表示滑动的进度。

//第三个参数表示拖动的按钮

CCControlSlIDer *slIDer = CCControlSlIDer::create("slIDerTrack.png","slIDerProgress.png",21); Font-family:新宋体; Font-size:9.5pt">"slIDerThumb.png");

//设置滑动最大值

slIDer->setMaximumValue(2.0f);

//设置滑动的最小值

slIDer->setMinimumValue(0.0f);

//设置默认值

slIDer->setValue(0.5f);

//设置某一范围内的最大值,当移动到了1.2之后移动不了了

slIDer->setMaximumAllowedValue(1.2f);

//设置某一范围内的最小值,向左移动到0.3之后移动不了了

slIDer->setMinimumAllowedValue(0.3f);

//设置slIDer的所在位置

slIDer->setposition(ccp(winSize.wIDth / 2,winSize.height/2 - 30));

slIDer->addTargetWithActionForControlEvents(

this,

cccontrol_selector(slIDerCallBack),138); Font-family:新宋体; Font-size:9.5pt">CCControlEventValueChanged);

CCString *str = CCString::createWithFormat("%.2g",slIDer->getValue());

//第一个参数表示要显示的字符串

//第二个参数表示从哪张图片中取值

//第三个参数表示的是每个字的宽度wIDth

//第四个参数表示的是每个字的高度

//第五个参数表示的是起始的字符

/* creates the cclabelAtlas with a string,a char map file(the atlas),

the wIDth and height of each element and the starting char of the atlas

*/

atlas = cclabelAtlas::create(

str->getCString(),

"Fonts/fps_images.png",

12,32,21); Font-family:新宋体; Font-size:9.5pt">'.');

atlas->setAnchorPoint(ccp(0.5,0.5));

//设置字体的放大效果

atlas->setScale(2.0f);

atlas->winSize.height / 2 + 30));

addChild(atlas);

slIDer->setValue(1.3f);

addChild(slIDer);

return true;

}

//设置slIDer的回调函数

//这里的sender表示发送的一者

voID CCControlEvent event)

{

CCControlSlIDer * slIDer = (CCControlSlIDer *)sender;

getValue());

//因为成为了全局的了,所以能够访问的到

atlas->setString(str->getCString());

}

运行结果:

最大值

最小范围:

最大范围:

运行结果在0.31.2之间

CCControlSwitch

第一个参数,掩底背景图片,第二个参数为开的图片,第三个参数为关的图片,第四个参数为手指划到按钮,第五,六个参数分别为开和关显示的文字。

CCControlSwitch * sw = CCControlSwitch::create(

CCSprite::create("switch-mask.png"),

CCSprite::create("switch-on.png"),

CCSprite::create("switch-off.png"),

CCSprite::create("switch-thumb.png"),

cclabelTTF::create("ON","CourIEr New",20),

cclabelTTF::create("OFF",20)

);

设置时间触发后的响应函数

sw->addTargetWithActionForControlEvents(this,cccontrol_selector(T12UI::switchCallback),

CCControlEventValueChanged)

如何在响应函数中获取选项

voID T12UI::switchCallback(CCObject * sender,CCControlEvent event)

{

CCControlSwitch * sw = (CCControlSwitch *)sender;

If(sw->isOn())

{

cclog(“On”);

} else {

cclog(“off”);

}

}

5 CCControlSwitch案例说明

T12UI.h

init();

//开关的回调函数

voID switchCallBack(init();

//通过SimpleAudioEngine的方式实现加载音乐

SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic("audio/start.wav");

//创建开关、

//第一个参数为:掩底背景CCSprite

//第二个参数为开的CCSprite

//第三个参数为关的CCSprite

//第四个参数为手指滑到CCSprite

//第五个参数onlabel

//第六个参数为offlabel

CCControlSwitch *sw = CCControlSwitch::create(

CCSprite::"switch-mask.png"),

"switch-on.png"),21); Font-family:新宋体; Font-size:9.5pt">"switch-off.png"),21); Font-family:新宋体; Font-size:9.5pt">"switch-thumb.png"),133); Font-family:新宋体; Font-size:9.5pt">cclabelTTF::"ON",21); Font-family:新宋体; Font-size:9.5pt">"CourIEr New",21); Font-family:新宋体; Font-size:9.5pt">"OFF",20)

);

//设置开关的位置

sw->winSize.height / 2));

sw->addTargetWithActionForControlEvents(this,0); Font-family:新宋体; Font-size:9.5pt">switchCallBack),138); Font-family:新宋体; Font-size:9.5pt">CCControlEventValueChanged);

//设置开关默认是关闭的

sw->seton(false);

//将开关添加到Layer中去

addChild(sw);

return true;

}

//开关的回调函数

voID CCControlSwitch * sw = (CCControlSwitch *)sender;

if (sw->isOn())

{

cclog("click On");

//通过playBackgroundMusic打开音乐

playBackgroundMusic("audio/start.wav");

}

else

{

//通过stopBackgroundMusic()关闭音乐

stopBackgroundMusic("audio/start.wav");

"click off");

}

}

运行结果:

CCScale9Sprite九妹图

CCScale9Sprite对象,是一种CCSprite对象的变形,它的用法和CCSprite类似,不同点是:CCScale9Sprite对象有个特性就是缩放贴图时可以尽量不失帧。比如QQ聊天内边框

原理:

CCScale9Sprite的实现非常巧妙,是通过1CCSpriteBatchNode9CCSprite来实现的,原理很简单,通过将原纹理资源切割成9部分(PS:这也是叫九宫图的原因)。根据想要的尺寸,完成以下三个步骤:

保持4个角部分不变形

单向拉伸4条边(即在4个角两两之间的边,比如上边,只做横向拉伸)

双向拉伸中间部分(即九宫图的中间部分,横向,纵向同时拉伸,PS:拉伸比例不一定相同)

CCSpriteBatchNode的资源为整个的纹理,9 CCSprite 对应于纹理的9

个部分(根据纹理不同,9 部分所占比例会有所不同),根据想要的尺寸,

9 部分拼装在一起!

需要包含的头文件

#include “cocos-ext.h” //包含cocos-ext.h头文件

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

使用说明:

CCScale9Sprite::create(const char* file,CCRect rect,CCRect,cAPInsets);

第一个参数为文件,第二个参数使用文件的大小,第三个参数如下,若未设置,或设置图分别如下:

我们知道CCSprite的拉伸方式是通过setScale();来实现的,而对于CCScale9Sprite则不同。它是通过setContentSize(constCCSize & size);来实现图片的拉伸。

测试代码:

CCScale9Sprite * spr = CCScale9Sprite::create("scale9.png",CCRectMake(0,116,102),CCRectMake(40,30,40));

spr->setposition(ccp(winSize.wIDth/2,winSize.height/2));

addChild(spr);

//spr->setScale(4.0f);

spr->setPreferredSize(CCSizeMake(400,200));

关于CCScale9Sprite::create()

T12UI.h

init();

};

#endif

CCScale9Sprite * s9spr = CCScale9Sprite::create(

"scale9.png",138); Font-family:新宋体; Font-size:9.5pt">CCRectMake(0,138); Font-family:新宋体; Font-size:9.5pt">CCRectMake(30,40,56,20));

s9spr->winSize.height / 2));

addChild(s9spr);

s9spr->setPreferredSize(CCSize(500,100));

return true;

}

运行结果:

CControlbutton

CCScale9Sprite * bgbutton = CCScale9Sprite::create("button.png");

//背景色图片

CCScale9Sprite * bgbuttonlighted =

CCScale9Sprite::create("buttonHighlighted.png");

//背景色高亮图片

cclabelTTF * Titlebutton = cclabelTTF::create("touch Me","CourIEr

New",30);

//按钮的文本

CCControlbutton * button =

CCControlbutton::create(Titlebutton,bgbutton);

//创建按钮

button->setcolor(ccc3(159,168,176));

//调色

button->setBackgroundSpriteForState(bgbuttonlighted,

CCControlStateHighlighted);

//按下后背景高亮

button->setTitlecolorForState(ccwHITE,

CCControlStateHighlighted);

//按下后文本高亮

button->addTargetWithActionForControlEvents(this,cccontrol_selector(T12UI::buttontouchDown));

button->addTargetWithActionForControlEvents(this,cccontrol_selector(T12UI::buttontouchDown),CCControlEventtouchDown);

button->addTargetWithActionForControlEvents(this,cccontrol_selector(T12UI::buttontouchDragInsIDe),CCControlEventtouchDragInsIDe);

响应的事件类型如下:

/** Kinds of possible events for the control objects. */

enum

{

};

typedef unsigned int CCControlEvent;

T12UI.h

init();

voID touchDownCallBack(CCControlEvent event);

voID touchDragInsIDeCallBack(scene;

}

bool init();

CCScale9Sprite *bgbutton = "button.png");

CCScale9Sprite *bgbuttonlighted = "buttonHighlighted.png");

cclabelTTF * text = "touch Me",21); Font-family:新宋体; Font-size:9.5pt">"CouIEr New",50);

CCControlbutton * button = CCControlbutton::create(text,bgbutton);

//为按钮添加位置

button->winSize.height / 2));

button->setBackgroundSpriteForState(bgbuttonlighted,138); Font-family:新宋体; Font-size:9.5pt">CCControlStateHighlighted);

button->setTitlecolorForState(ccRED,138); Font-family:新宋体; Font-size:9.5pt">CCControlStateHighlighted);

addChild(button);

//为按钮添加监听事件,添加的是按钮被点击的事件

button->touchDownCallBack),138); Font-family:新宋体; Font-size:9.5pt">CCControlEventtouchDown);

//为按钮添加监听事件,添加的是按钮Drag的事件

button->touchDragInsIDeCallBack),138); Font-family:新宋体; Font-size:9.5pt">CCControlEventtouchDragInsIDe);

return true;

}

voID CCControlEvent event)

{

"touchDownCallBack");

}

voID "touchDragInsIDeCallBack");

}

运行结果:

总结

以上是内存溢出为你收集整理的1cocos2dx扩展库UI控件,CCControlSlider,CCScale9Sprite(九妹图),CCControlSwitch,CCControlButton全部内容,希望文章能够帮你解决1cocos2dx扩展库UI控件,CCControlSlider,CCScale9Sprite(九妹图),CCControlSwitch,CCControlButton所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1005885.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存