位置: 编程技术 - 正文

Cocos2dx技术(三)——cocos2dx基本概念(六)控件库(cocos2d原理)

编辑:rootadmin

推荐整理分享Cocos2dx技术(三)——cocos2dx基本概念(六)控件库(cocos2d原理),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:cocos2d原理,cocos2dx4.0入门,cocos 2dx,cocos 2dx,cocos2dx 教程,cocos2dx 教程,cocos2dx 教程,cocos2d教程,内容如对您有帮助,希望把文章链接给更多的朋友!

cocos2dx提供了一套易于使用的控件库来满足开发者的GUI需求。cocos2dx控件大致可分为两种,第一种是非继承自Widget类的早期控件库;第二类是新的继承自Widget类的控件库。

先介绍早期的非继承自Widget的控件库

1、标签(Label)

由于Label是SpriteBatchCode的子类,所以每个Label都具有精灵的特性,可以旋转、缩放、着色、改变锚点等等。

Label用于创建TTF、BMFont、SystemFount文本。

a、BMFont标签

BMFont是使用位图字体的标签类型。位图字体不可伸缩,每个字的每个特定尺寸需要一个单独图片资源。

创建一个BMFront标签需要两类资源:一个.fnt描述文件,每个字符对应的png&#;式图片集。

auto myLabel = Label::createWithBMFont("myFount.fnt","My Text"); //注意,第二个参数字符串内的所有字符必须在fnt文件中有说明,并能找到其对应的png图片,否则将不会被显示。

b、TTF标签

TTF标签是实际运用中使用得最多的标签。

使用TTF标签时需要提供字体库文件(.ttf文件)。TTF标签可以改变字体显示大小,无需提供单个字体(.png&#;式的图片文件)。

auto myLabel = Labe::createWithTTF("songti.ttf","My Text",); //第三个参数是指定文字大小

虽然TTF标签比BMFount更加灵活,但是它的效率比较底下。

可以通过创建TTFConfig对象来管理和设置TTF标签的属性。

TTFConfig config;

config.fontFilePath="./songti.ttf";

config.fontSize=;

auto myLanel = Label::createWithTTF(config,"My Text");

另外,TTF标签还可以显示中日韩字符

c、SystemFont标签

SystemFont是一一种系统默认的字体,字体属性不能随意改动。

2、菜单和菜单项(Menu、MenuItem)

a、Menu是游戏选项的导航,Menu不能单独起作用,Menu需包含至少一个菜单项,菜单项通常以可点击的按钮的形式显示。

MenuItem通常有一个被正常状态,一个被选中状态,一个点击回调组成。

auto item= MenuItemImage::create("Normal.png", "Selected.png", CC_CALLBACK_1(HelloWorld::menuCallback, this)); //注意HelloWorld::menuCallback实际上是函数指针auto menu = Menu::create(Item, NULL);this->addChild(menu, 1); //this指的是场景或者场景中的Layer或者其他容器

菜单还可以通过泛型容器来创建

Vector<MenuItem*> MenuItems;auto Item = MenuItemImage::create("Normal.png", "Selected.png",CC_CALLBACK_1(HelloWorld::menuCallback, this));MenuItems.pushBack(Item);auto menu = Menu::createWithArray(MenuItems);this->addChild(menu, 1);

b、使用Lambda函数作为菜单回调

Cocos2dx技术(三)——cocos2dx基本概念(六)控件库(cocos2d原理)

Lambda是指可以在源代码中编写内联函数的函数。cocos2dx中可以直接使用Lambda函数,但是更常见的是将Lambda函数作为回调函数,比如菜单项的回调函数。

一个简单的Lambda函数

auto func = [] () { cout << "Hello world"; };

func(); // now call the function

使用lambda作为Action函数

auto action1 = CallFunc::create([&](){ std::cout << "using a Lambda callback" << std::endl;});

使用lambda创建一个std::function:std::function<void()> myFunction = [](){ std::cout << "From myFunction()" << std::endl;};auto action2 = CallFunc::create(myFunction);

使用lambda作为MenuItem回调:auto closeItem = MenuItemImage::create("CloseNormal.png", "CloseSelected.png",[&](Ref* sender){ // 回调代码});

下面是新补充的控件库,这里的控件都是继承自widget。这些控件分为两类,第一类是容器类控件;第二类是非容器类的普通控件

3、布局(Layout,容器类控件)

Layout是众多容器类的父类,Layout及其子类主要用于陈列子控件和裁剪。

LayoutManager、LayoutParameter、Margin类用于陈列控件

HBox、VBox、RelativeBox可以很方便地将控件水平、垂直、相对地陈列

ScrollView、ListView和PageView是针对某些应用场景使用的指定容器

4、非容器类控件

a、Button(按钮)

Button用于捕捉触摸事件,点击按钮将会调用一个预定义的回调函数。Button类允许设置按钮的标题、图像及其他属性,每个按钮都有一个正常状态和选中状态。

b、CheckBox(复选框)

c、LoadingBar(进度条)

d、Slider(滑动条)

......

续上篇cocos2dx函数重载异常的问题 之前遇到了这样的问题:我的函数只有一种声明,而VS却给出好多个重载,细看,都是以前这个函数的版本,具体参考前一篇博客

cocos2dx2.x批量移除CCNode的方法 项目需求如下:生成若干Sprite来播放动画,播放完之后将Sprite移除原打算将所有Sprite都设为相同的Tag,然后在播放完之后removeChildByTag了事但未能如愿,

Cocos2d中如何调用Android层中的方法 1.在VS定义一个C类PayMethod,头文件中加入下面预编译代码#includecocos2d.hUSING_NS_CC;#if(CC_TARGET_PLATFORM==CC_PLATFORM_ANDROID)#includejni.h#includeplatform/android/jni/JniHelper.h

标签: cocos2d原理

本文链接地址:https://www.jiuchutong.com/biancheng/368843.html 转载请保留说明!

上一篇:《Cocos2d学习之路》十、网络请求HttpClient,Socket,WebSocket(cocos2dx视频教程)

下一篇:续上篇cocos2dx函数重载异常的问题(cocos2djs教程)

  • 开外经证需要预缴税几个点
  • 机动车销售统一专票图片
  • 债券到期账务处理
  • 大巴车怎么进行营运
  • 残疾人加计扣除政策文件
  • 实名制车票抵扣怎么操作
  • 非流动资产处置损失包括哪些
  • 增值税申报失败怎么撤销
  • 成品油购进数据未同步怎么办
  • 企业降低存货成本的途径和方法
  • 小规模纳税人开专票税率是1%还是3%
  • 新公司做财务
  • 工程结算与工程施工如何结转
  • 网上缴税后会有发票吗
  • 预缴工程税的帐务处理如何做?
  • 服务业工资计入成本还是营业费用
  • 小规模纳税人开专票和普票的区别
  • 办公室租赁合同需要交那些税?
  • 二手房增值税税率表2023年最新
  • 出售专利权属于什么科目
  • 建筑企业存款账户
  • 关于购买专业书籍的请示
  • 所得税a类申报表
  • gitlab lint
  • 关闭通知横幅
  • 企业老板机票怎么报销记账
  • 购买加油卡怎么充值
  • 企业清算期限如何规定
  • 电脑重装系统怎么激活
  • 水利建设基金是税还是费
  • 交易性金融资产的账务处理
  • 电力安装公司都有什么业务
  • 博客界面模板
  • 公司账户转法人账户
  • yolov5 output
  • php源码抓取工具
  • python中生成器的作用
  • 公司向银行贷款还不上会怎么样
  • 边际贡献总额什么意思
  • 在与sqlserver建立连接时出现
  • 小规模纳税人销售商品会计分录
  • 暂估入库收到发票后摘要
  • SQL Server性能优化工具Profiler
  • 建筑行业小规模纳税人和一般纳税人
  • 工商年报资产状况公示还是不公示
  • 免税收入是否可抵扣
  • 车船税去哪里交
  • 企业所得税的减免税额
  • 在租赁公司贷款买的车绿本上会有我的名字吗
  • 园林绿化企业属于什么行业
  • 在职职工在单位应享受哪些待遇
  • 开具红字发票如何做账?
  • 无偿划拨土地需要提折旧吗
  • 刻章费用怎么说
  • 募集资金有哪些渠道
  • 存贷款利率计算公式
  • 销售费用的主要科目
  • 购入固定资产预计净残值
  • 库存结转成本如何计算
  • 以前年度调整要更正申报吗
  • mysql绿色版安装配置教程
  • windows vista升级
  • 3种方法教你有效祛湿
  • centos如何清除硬盘数据
  • win10开机自动弹出设置界面
  • Netlib.exe - Netlib是什么进程 有什么用
  • 微软win8.1
  • 你会支持国产系统吗英文
  • quick-cocos2d-x如何在mac下编译安卓版本
  • python 先序遍历
  • jquery给table赋值
  • android 科大讯飞语音引擎 调用无响应
  • 鼠标瞬间移动
  • python列表组成字符串
  • 税务行业微信缴税项目是什么
  • 开具负数发票(专用发票)流程?
  • 江西省国家税务局发票查询
  • 个人所得税税前扣除是什么意思
  • 半挂牵引车车船税怎么算
  • 国网成都市局和绵阳市局的区别?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设