cocos2dx2.2.2登录场景中Checkbox选择框的实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了cocos2dx2.2.2登录场景中Checkbox选择框的实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4266字,纯文字阅读大概需要7分钟。
内容图文
在前两篇文章中,我们介绍了在注册场景中需要用到的输入框及弹出框的实现方式,这两篇文章中介绍的内容在登录场景同样会用到。而我们经常会在登录场景中见到的另一种元素就是自动登录或者记住密码的Checkbox选择框。那么,接下来就让我们看看这个选择框如何实现。
首先,我们先看一下效果
我们需要的就是一个Checkbox选择框,后面加上“自动登录”或者其他的文字。效果就是点击选择框或文字时,Checkbox的状态会进行切换;同时在程序中还要知道当前选择框的状态,只要我们能够实现这几点,这个功能就完成了。
界面问题比较简单,我们只需要根据自己的图片素材和要展示的文字来摆放各元素的位置就可以了,我们可以把Checkbox和文字放到一个父元素中,然后再整体调整其位置。
至于切换效果,我们可以将两种效果图叠放到一起,然后通过设置元素是否可见来实现。而当前状态也可以根据元素是否可见来确定。现在,上面的几个问题都解决了。下面然我们来看一看实现代码。
CCCheckbox.h文件
1 #ifndef __MyGame__CCCheckbox__ 2 #define __MyGame__CCCheckbox__ 3 4 #include "cocos2d.h" 5usingnamespace cocos2d; 6 7class CCCheckbox:public CCSprite{ 8public: 9//创建checkbox10static CCSprite * create(constchar * picNoSelect,constchar * picSelect,constchar * content ,int status = 0); 1112//点击操作13int click(); 1415private: 16//获取当前状态17int getStatus(); 18}; 1920#endif /* defined(__MyGame__CCCheckbox__) */
CCCheckbox.cpp文件
1 #include "CCCheckbox.h" 2 #include "cocos2d.h" 3 4usingnamespace cocos2d; 5 6//创建,参数:未选中图片名,选中图片名,文字,状态(0-未选中,1-选中) 7 CCSprite * CCCheckbox::create(constchar * picNoSelect, constchar * picSelect, constchar * content, int status) 8{ 9 CCSprite * sp = CCSprite::create(); 1011//checkbox12 CCSprite * sp_checkbox_select = CCSprite::create(picSelect); 13 CCSprite * sp_checkbox_noSelect = CCSprite::create(picNoSelect); 14 CCSize size_checkbox = sp_checkbox_noSelect->getContentSize(); 1516//文字17 CCLabelTTF * label_content = CCLabelTTF::create(content, "Arial", 20); 18 label_content->setColor(ccBLACK); 19 label_content->setHorizontalAlignment(kCCTextAlignmentLeft); //左对齐20 CCSize size_content = label_content->getContentSize(); 2122//缩放比例23float scale_h = size_checkbox.height / size_content.height; 2425//缩放文字26 label_content->cocos2d::CCNode::setScale(scale_h, scale_h); 2728//最终大小29 CCSize size = CCSize(size_checkbox.width * 2 + size_content.width * scale_h , size_checkbox.height * 1.5); 30 sp->setContentSize(size); 3132//设置checkbox状态33 sp->addChild(sp_checkbox_noSelect); 34 sp->addChild(sp_checkbox_select); 35 sp_checkbox_noSelect->setPosition(CCPointMake(size_checkbox.width,size.height/2)); 36 sp_checkbox_select->setPosition(CCPointMake(size_checkbox.width,size.height/2)); 37 sp_checkbox_noSelect->setTag(0); //不选中tag=038 sp_checkbox_select->setTag(1); //选中tag=13940if (status == 0) 41 { 42//设置未选中状态43 sp_checkbox_noSelect->setVisible(true); 44 sp_checkbox_select->setVisible(false); 45 } 46else47 { 48//设置选中状态49 sp_checkbox_noSelect->setVisible(false); 50 sp_checkbox_select->setVisible(true); 51 } 5253//设置文字位置54 sp->addChild(label_content); 55 label_content->setAnchorPoint(CCPoint(0,0.5)); 56 label_content->setPosition(CCPointMake(size_checkbox.width * 2, size.height/2)); 5758return sp; 59} 6061//点击操作62int CCCheckbox::click() 63{ 64int status = getStatus(); 65 CCSprite * sp_checkbox_noSelect = (CCSprite *)(this->getChildByTag(0)); 66 CCSprite * sp_checkbox_select = (CCSprite *)(this->getChildByTag(1)); 6768if (status == 0) 69 { 70 status = 1;//状态设置为选中71 sp_checkbox_noSelect->setVisible(false); 72 sp_checkbox_select->setVisible(true); 73 } 74else75 { 76 status = 0;//状态设置为未选中77 sp_checkbox_noSelect->setVisible(true); 78 sp_checkbox_select->setVisible(false); 79 } 8081return status; 82} 8384//获取当前状态,0-未选中,1-选中85int CCCheckbox::getStatus() 86{ 87 CCSprite * sp_checkbox_noSelect = (CCSprite *)(this->getChildByTag(0)); 88int status = 0; //未选中89if (!sp_checkbox_noSelect->isVisible()) 90 { 91 status = 1;//选中92 } 9394return status; 95 }
下面是登录场景中使用Checkbox的代码
1 // 自动登录 2 CCSprite * spriteAuto = CCCheckbox::create("checkbox_normal.png", "checkbox_select.png", "自动登录", 0); 3 CCMenuItemSprite * itemAuto = CCMenuItemSprite::create(spriteAuto, spriteAuto,this,menu_selector(LoginHandleLayer::clickCheckbox));
我们将Checkbox放到Menu中来触发其点击事件,相应的回调函数为
1 // 点击checkbox 2 void LoginHandleLayer::clickCheckbox(CCObject * pSender) 3{ 4 CCLog("clickCheckbox"); 5 6 CCMenuItemSprite * item = (CCMenuItemSprite *)pSender; 7 CCCheckbox * checkbox = (CCCheckbox *)(item->getNormalImage()); 8int status = checkbox->click(); 910 CCLog("status:%d",status); 11 }
现在我们点击切换Checkbox时,可以看到输出的日志,正确得到了Checkbox的当前选择状态。
现在,我们就成功实现了选择框的状态切换功能。
原文:http://www.cnblogs.com/yangxq/p/4060785.html
内容总结
以上是互联网集市为您收集整理的cocos2dx2.2.2登录场景中Checkbox选择框的实现全部内容,希望文章能够帮你解决cocos2dx2.2.2登录场景中Checkbox选择框的实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。