cocos2d-x 菜鸟学习笔记八(界面控件之CCControl控件)

这篇博客介绍了cocos2d-x中的CCControl控件,包括九宫格按钮、滑动条、开关按钮和步进器的使用方法。通过示例代码展示了如何创建和实现这些界面元素的交互功能,帮助开发者更好地理解和应用cocos2d-x扩展控件。
摘要由CSDN通过智能技术生成

CCControl控件也是cocos2d-x扩展控件中的一部分,包含了九宫格(nine pacth)按钮、滑动条、开关按钮、电位计按钮、步进器和颜色选择控件,这些也算是常用的控件了,下面是各个控件的使用方法及流程:

1.九宫格按钮

这是一种为了方便不失真缩放而诞生出的简洁型按钮,具体说来就是这种按钮使用的是纹理相对比较规则的图片,然后将图片划分为九个显示区域,在缩放按钮的时候,根据需要将这九个区域中的纹理按最佳比例进行延伸或者缩放,最后达到降低、甚至不失真的缩放效果。对应九宫格的类是CCScale9Sprite,它继承的是CCNodeRGBA,就是它负责将需要的图片按3X3的等份划分出九个区域,然后搭配CCControlButton这个按钮类即可制作出九宫格按钮,下面是官方原例Extension Test里抽出修改的代码:

//我把原来用的场景改成了层
class CCControlButtonTest_Event : public CCLayer
{
public:
    bool init();
    //这里定义了button的触摸事件
    void touchDownAction(CCObject *sender, CCControlEvent controlEvent);
    void touchDragInsideAction(CCObject *sender, CCControlEvent controlEvent);
    void touchDragOutsideAction(CCObject *sender, CCControlEvent controlEvent);
    void touchDragEnterAction(CCObject *sender, CCControlEvent controlEvent);
    void touchDragExitAction(CCObject *sender, CCControlEvent controlEvent);
    void touchUpInsideAction(CCObject *sender, CCControlEvent controlEvent);
    void touchUpOutsideAction(CCObject *sender, CCControlEvent controlEvent);
    void touchCancelAction(CCObject *sender, CCControlEvent controlEvent);
protected:
    CC_SYNTHESIZE_RETAIN(CCLabelTTF *, m_pDisplayValueLabel, DisplayValueLabel)
    CONTROL_SCENE_CREATE_FUNC(CCControlButtonTest_Event)
};

bool CCControlButtonTest_Event::init() {

	bool bRet = false;
    do 
    {
        //
        // super init first
        //

        CC_BREAK_IF(! CCLayer::init());
	
		CCSize Size = CCDirector::sharedDirector()->getWinSize();
        // Add the button 这里先设定了两个九宫格用来划分不同状态下按钮的图片区块
        CCScale9Sprite *backgroundButton = CCScale9Sprite::create("button.png");
        CCScale9Sprite *backgroundHighlightedButton = CCScale9Sprite::create("buttonHighlighted.png");
        //这个label是用来做caption标题的
        CCLabelTTF *titleButton = CCLabelTTF::create("Touch Me!", "Marker Felt", 30);

        titleButton->setColor(ccc3(159, 168, 176));
        //这里开始加入button控件,创建时引用了label和CCScale9Sprite
        CCControlButton *controlButton = CCControlButton::create(titleButton, backgroundButton);
        //这里用来设置按钮被触发状态(高亮状态)时的标题颜色和图片,这里可以看到引用的是另一个CCScale9Sprite 
        //在源码中还能看到其它状态的设置如:CCControlStateSelected、CCControlStateDisabled
        controlButton->setBackgroundSpriteForState(backgroundHighlightedButton, CCControlStateHighlighted);
        controlButton->setTitleColorForState(ccWHITE, CCControlStateHighlighted);
        //这里设置了锚点,用来设定按钮状态变化时的中心坐标
        controlButton->setAnchorPoint(ccp(0.5f, 1));
        controlButton->setPosition(ccp(Siz
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值