Cocos2d-JS中标签和菜单

Cocos2d-x 自定义实现下拉列表框(两种实现方法) 在引擎中并没有提供相应的下拉列表控件实现,所以如果在实际应用中需要的话就要自己代码实现。   下面我介绍两种实现的方式,以供大家参考。 方法一: 这个方法我是参考了网上的一段代码,然后自己对代码进行部分的修改,下面贴出一个xcode中的下拉列表框样式: 下面先贴出自定义实现的效果图: 通常,一个下拉列表框都是这样的: ①有一个选中后的显示栏目; ②点击显示栏 阅读详情
一、标签
Cocos2d-JS中标签类重要有三种,cc.LabelTTF、cc.LabelAtlas和cc.LabelBMFont
1.cc.LabelTTF
cc.LabelTTF是使用系统中的字体,它是最简单的标签类。cc.LabelTTF继承了cc.Node类,具有cc.Node的基本特性。
字体初始化代码如下:
cc.LabelTTF类的构造函数定义如下
ctor(text,fontName,fontSize,dimensions,hAlignment,vAlignment)
2.cc.LabelAtlas
cc.LabelAtlas是图片集标签,其中Atlas本意是地图集、图片集。这种标签显示的文字是从一个图片集中取出的,cc.LabelAtals比cc.LabelTTF快很多,cc.LabelAtlas中的每个字符必须有固定的高度和宽度。
cc.LabelAtlas间接继承了cc.Node类,具有cc.Node的基本特性,他还直接继承了cc.AtlasNode

上述代码第29行是创建一个cc.LabelAtlas对象,构造函数的第一个参数是要显示的文字,第二个参数是图片集文件,第三个参数是字符高度,第四个参数是字符宽度,第五个参数是开始字符
为了防止出现硬编码问题,应该使用res.charmap_png表示资源的路径,变量res.charmap_png是在resource.js中定义的资源名。
resource.js代码如下

3.cc.LabelBMFont
cc.LabelBMFont是位图字体标签,需要添加字体文件,包括一个图片集png和fnt文件。
cc.LabelBMFont比LabelTTF快很多。cc.LabelBMFont中的每个字符的宽度是可变的。
创建并初始化标签。第一个参数是要显示的文字,第二个参数是图片集文件,只需在resource.js中导入fnt文件的路径即可。
在resource.js中导入fnt的路径

二、菜单
菜单中又包含菜单项,菜单项类是cc.MenuItem,每个菜单项都有三个基本状态。正常,选中和禁止。
菜单是按照菜单项进行分类的,cc.MenuItem的子类有cc.MenuItemLabel,cc.MenuItemSprite和cc.MenuItemtoggle。
其中cc.MenuItemLabel是文本菜单,他有两个子类cc.MenuItemAtlasFont和cc.MenuItemFont
cc.MenuItemSprite类是精灵菜单,它的子类是cc.MenuItemImage,它是图片菜单。
cc.MenuItemToggle类是开关菜单
1.文本菜单
文本菜单类cc.MenuItemFont的其中一个构造函数定义如下:
ctor(value,   //要显示的文本
callback,      //菜单操作的回调函数指针
target)
文本菜单类cc.MenuItemAtlasFont是基于图片集的文本菜单项,他的其中一个构造函数定义如下:
ctor(value,      //要显示的文本
charMapFile,  /图片集文件
itemWidth,      //要截取的文字在图片中的宽度
itemHeight,    //要截取的文字在图片中的高度
startCharMap, //开始字符
callback)//菜单操作的回调函数指针

上述代码第43-44行是设置文本菜单的文本字体和字体大小,第46行代码是创建cc.MenuItemFont菜单对象,它是一个一般文本菜单项,构造函数的第一个参数是菜单项的文本内容,第二个参数是单击菜单项回调的函数指针,this.menuItem1Callback是函数指针,this代表函数所在的对象。
2.精灵菜单和图片菜单
精灵菜单的菜单项类是cc.MenuItemSprite
图片菜单的菜单项类是cc.MenuItemImage
由于cc.MenuItemImage继承于cc.MenuItemSprite,所以图片菜单也属于精灵菜单。
为什么叫做精灵菜单呢。因为这些菜单具有精灵的特点,可以让精灵动起来。具体使用时是把一个精灵放置到菜单中作为菜单项
精灵菜单项类cc.MenuItemSprite的其中一个构造函数定义如下:
ctor(normalSprite,      //菜单项正常显示时的精灵
selectedSprite,           //选择菜单项时的精灵
callback,                     //菜单操作的回调函数指针
target)
使用cc.MenuItemSprite比较麻烦,在创建MenuItemSprite之前要先创建三个不同的状态所需要的精灵。cc.MenuItemSprite还有一些其他的构造函数,在这些函数中可以省略disabledSprite参数。
cc.MenuItemImage类的一个构造函数定义如下:
ctor(normalImage,          //菜单项正常显示时的图片
selectedImage,               //选择菜单项时的图片
callback,                       //菜单操作的回调函数指针
target)
两种创建精灵菜单的代码如下所示:

第55,56行创建两种不同状态的精灵,第58行代码是创建精灵菜单cc.MenuItemSprite对象;第59.60是设置开始菜单项位置。
3.开关菜单
开关菜单的菜单项类是cc.MenuItemToggle.它是一种可以两种状态切换的菜单项。它可以通过下面的函数创建
ctor(OnMenuItem,        //菜单项On时的菜单项
offMenuItem,                //菜单项Off时的菜单项
callback,                    //菜单操作的回调函数指针
target
)
关于开关菜单的用法



Cocos2d-x游戏引擎与HarmonyOS Next融合开发实战:JSB桥接与NAPI适配 跨平台游戏开发中,游戏引擎与原生操作系统的深度集成是提升应用性能和用户体验的关键。其核心原理在于通过桥接技术实现不同运行时环境间的通信,例如JavaScript引擎与原生模块的交互。这项技术的价值在于能够复用成熟的游戏代码资产,同时充分利用目标操作系统的原生特性与性能优势。在鸿蒙生态的应用场景下,开发者常面临将基于Cocos2d-x和SpiderMonkey引擎的现有游戏项目迁移至HarmonyOS Next的挑战,这需要构建高效的JSB-Ark桥接层,并利用NAPI机制实现ArkTS与C++核心逻辑的无缝 阅读详情

相关推荐

cocos2d-x 复习知识点整理(三)

21.cocos2d引擎的特点和优势 随着游戏动漫行业的迅速发展,游戏开发引擎也随着市场变化而更新,相比其他引擎,cocos2d-x有其独特的优势。 cocos2d-x游戏引擎提供了全套的引擎和开发工具,涵盖从前期的游戏设计、资源制作、开发调试、打包上线全套的解决方案。Cocos2d重点优化了工作流,规范了整个游戏开发流程,降低沟通成本,提高开发效率。 Cocos2d-x不断的优化游戏性能,以保...

k_koris的博客 1006

COCOS2DX学习笔记--标签

Cocos2d-js中标签类主要有三种:cc.LableTTF/cc.LableAtlas/cc.LableBMFont cc.LableTTF 使用系统中的字体,是最简单的标签类。 1.cc.LableTTF类图 cc.Class-----cc.Node----cc.NodeRGBA----cc.Sprite----cc.LabelTTF 2.cc.LableTTF构造函数 ctor...

tfight的博客 224

构建基础的Cocos2d-js游戏排行榜系统

Cocos2d-js是一款功能强大的游戏开发框架,它允许开发者使用JavaScript语言来创建2D游戏。由于它的高性能与灵活性,Cocos2d-js成为了众多开发者构建游戏和交云应用的首选工具。它支持跨平台开发,这意味着开发者可以使用同一套代码库来构建适用于Android、iOS、Web以及更多的操作系统和浏览器环境的应用。Cocos2d-js 提供了丰富的 UI 组件,使得开发者能够快速构建游戏界面和交互元素。基础UI组件包括按钮()、滑动条()、进度条()、文本显示(

weixin_42613360的博客 724

cocos creator 滚动列表 ListView

滚动列表,这种东西在游戏中很常见.而cocos creator 中的ScrollView + Layout 只有你想不到,没有它满足不了, 各种分骚布局. 都能实现. 但是,但是, 它还有一些场景不是很适合.例如 : 千百人的排行榜(虽然,大家只会记得第一名,谁还在乎第二名,除非第二名是自己) 密密麻麻的好友列表(当然有些人是没有几个朋友的,就像我,这点就不适用了) 上百条的充值记录...

qq_20173207的博客 1万+

Cocos2D HTML5游戏开发全攻略

Cocos2D最初是为iOS平台开发的,后来发展成为一个跨平台的游戏开发框架,支持iOS、Android、Windows以及Web等多个平台。其特色在于提供了丰富的游戏开发工具和功能,比如场景管理、动画控制、粒子效果等。Cocos2D-JS提供了许多内置动作类,如MoveToRotateTo等,但开发者有时需要根据游戏特定的需求来创建自定义动作。// 自定义动作// 更新逻辑});// 使用自定义动作this精灵.runAction(new MyCustomAction());

weixin_32098457的博客 1163

cocos2d实现button(按钮)效果

这半年一直在用object-c开发一个ios游戏。使用cocos2d和box2d 。开发游戏变的简单多了。这游戏开发了半年多了。直到最近这个游戏停止了,因为资金问题,老大没法在发更多的工资了。哎,真的非常遗憾,我一个人完成游戏的编辑器开发,脚本开发,游戏代码开发,很不容易,因为我学object-c,coco2d才看了2个星期的书就直接开发了,以前是搞c++的吗。感觉4个人开发游戏真的很累,游戏为了脱颖出更加真实的效果还使用了物理引擎,在老大的同意的情况下,我共享cocos2d自己写的一些大家比较常用的,因为cocos2d有些控件不怎么好用或者没有,反正我觉得是这样的。如slider(滑块),button(按钮),RollNumber(数字滚动),Progress(进度条)....控件一一在我的博客里面公布,可以直接使用.源码打包下载 开发人员:Jason's.Alex QQ:531401335 csdn博客:http://blog.youkuaiyun.com/RuShrooM

cocos2d-js cc.MenuItem创建菜单项​

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33875564的博客 170

SAP BAPI调用避坑指南:处理MD61/MD62计划独立需求时,这些参数和返回值你必须检查

本文详细解析了SAP BAPI调用中处理MD61/MD62计划独立需求的关键参数和返回值检查要点,包括版本控制、日期类型和删除标记等核心参数设置,以及常见错误排查和高级调试技巧,帮助开发者高效管理需求计划数据。

weixin_30316097的博客 612

CCLabelAtlas的用法

原文地址: http://www.cocos2dev.com/?p=201 有时候游戏中要用到一些特殊的字体效果,特别是数字。 CCLabelAtlas就可以从png图中读取文字。 CCLabelAtlas* diceCount=CCLabelAtlas::labelWithString(“1:”, “nums_font.png”, 14, 21, ’0′);

Mr_Ray的IT专栏 4458

MPC-CBF 控制原理详解

假设系统满足如下离散时间动力学模型xt1fxtutxt∈Xut∈Uxt1​fxt​ut​xt​∈Xut​∈Uxtx_txt​:状态变量,定义域为可行状态集X⊆RnX⊆Rnutu_tut​:控制输入,定义域为控制约束集U⊆RmU⊆Rm系统需满足安全约束,由如下控制障碍函数(CBF)hX→RhX→RCx∈X∣hx≥0C:=x∈X∣hx≥。

m0_54691290的博客 1184

MIC卡的OFED驱动安装

 IB网络和OFED驱动安装 IB InfiniBand是一个统一的互联结构,可以处理存储I/O、网络I/O和进程间通信(IPC)。它可以将磁盘阵列、SANs、LANs、服务器和集群服务器进行互联,也可以连接外部网络(比如WAN、VPN、互联网)。设计InfiniBand的目的主要是用于企业数据中心,大型的或小型的。目标主要是实现高的可靠性、可用性、可扩展性和高的性能。Inf

beglorious的专栏 5106

canvas、cocos基础知识

canvas基础 基本操作 context.save()//保存状态 context.restore()//回复状态 context.moveTo()//开始点 context.lineTo()//画直线 context.beginPath()//开始一条新路径 context.closePath()//闭合一条路径 context.lineWidth//线宽 context.strokeStyl...

just_a_bad_guy的博客 1194

广义标签多伯努利滤波器(GLMB):多目标跟踪中的动态身份维护理论与算法解析

目标集表示Xx1l1x2l2xNlNX{(x1​l1​x2​l2​xN​lN​)}xi∈Rdxi​∈Rd为目标状态(如位置、速度),li∈Lli​∈L为唯一标签(可数无限集,如自然数序列),N 为目标数(允许N0N=0N0,即空集)。GLMB 通过广义化标签多伯努利分布,将多目标跟踪从 “状态估计” 提升至 “动态身份 - 状态联合建模”,成为复杂场景下精准跟踪的核心技术。

qq_44965657的博客 1601

cocos2d-JS核心概念

1.导演 导演类cc.Director用于管理场景,采用单例设计模式,在整个工程中只有一个实例对象,由于是单例模式,能够保存一致的配置信息,便于管理场景对象,获得导演类Director实例语句如下: var director=cc.Director._getInstance() 也可以在程序中直接使用cc.director,该对象是在框架内使用如下语句进行赋值: cc.director=c

AiCoding_D的博客 1158

Zephyr OS实战指南:从入门到精通物联网开发

本文提供了一份详尽的Zephyr OS实战指南,涵盖从开发环境搭建到物联网应用开发的全过程。文章详细介绍了如何利用Zephyr OS进行线程管理、设备驱动开发、低功耗设计以及蓝牙通信,并通过具体代码示例帮助开发者快速掌握这一专为物联网设备设计的开源实时操作系统,实现从入门到精通的跨越。

weixin_29201933的博客 547

【优化求解】基于matlab粒子群算法PSO确定最佳开关角对称级联多层逆变器【含Matlab源码 13080期】

粒子群算法PSO确定最佳开关角对称级联多层逆变器 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 97

cocos2d开发之菜单CCMenu

// 设置CCMenuItemFont的默认属性 [CCMenuItemFont setFontName:@"Marker Felt"]; [CCMenuItemFont setFontSize:26]; // 生成几个文字标签并指定它们的选择器 CCMenuItemFont* item1 = [CCMenuItemFont ite

xiangzilv1987的专栏 2870

【WorkBuddy专栏19】技能的创造与迁移——从零开始打造你的AI工作流

【WorkBuddy专栏19】技能的创造与迁移——从零开始打造你的AI工作流

AI人人懂 379

python cocos2d新手教程_使用Cocos2d-JS制作游戏

环境配置Python 【仅支持2.X版本,建议使用2.7版本】安装引擎包内的cocos环境 python setup.py ,并重启电脑(Ant, SDK, NDK均可以express enter跳过)注:引擎包目录结构第一部分: 引擎相关文件• frameworks 目录包含了 Cocos2d-html5 引擎和 Cocos2d-x JavaScript 代码的汇集.• Co...

weixin_39917576的博客 767

广联达Linkworks ArchiveWebService XML实体注入漏洞复现

广联达 LinkWorks /GB/LK/Document/ArchiveService/ArchiveWebService.asmx接口处存在XML实体注入漏洞,未经身份认证的攻击者可以利用此漏洞读取系统内部敏感文件,获取敏感信息,使系统处于极不安全的状态。

0xSec 2722

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

cocos2d-js开发总结

与Layer层相关 //创建Layer var myLayer=cc.Layer.extend({ ctor:function(){ //ctor方法必须定义,是执行layer上所有程序的入口 } }); //如要设置Layer背景颜色必须继承cc.LayerColor而不是cc.Layer var StartLayer = cc.LayerColor.extend(

cztflove的博客 669

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

如何快速上手cocos2d-js:从零开始的10分钟入门教程

想要快速掌握跨平台JavaScript游戏开发吗?cocos2d-js作为一款强大的开源游戏引擎,让您能够使用JavaScript语言开发出可在Web浏览器和原生平台(iOS、Android、Windows、Mac)上运行的游戏。本教程将带您从零开始,在10分钟内完成第一个cocos2d-js游戏项目,体验"一次编写,到处运行"的开发魅力。🎮 ## 📋 环境准备与项目创建 ### 一键安装

gitblog_00815的博客 150

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

《Cocos2d-x实战 JS卷 Cocos2d-JS开发》上线了

感谢大家一直以来的支持! 各大商店均开始销售:京东:http://item.jd.com/11659698.html当当:http://product.dangdang.com/23659808.html《Cocos2d-x实战 JS卷 Cocos2d-JS开发》源码及样章下载地址:源码下载地址:http://51work6.com/forum.php?mod=viewthre...

weixin_30411819的博客 194

cocos2d for android,cocos2d jsb 打包 Android APK

1.首先要会普通的cpp 打包成Android APK以下所说的是在cocos2d-x 2.2.2 或者 2.3 版本中。本文在Eclipse总用ndk编译cocos2d-x。老生常谈cocos2d-x JSB不是简单的js代码,涉及到C++代码,如果是Android的话又涉及到Java代码,有点复杂,如果搞过Android下的Jni的话会熟悉些。可以看下这篇文章:《Android Jni 例子 ...

weixin_29231221的博客 758

cocos 2d - js

cocos2d - js 知识整理目录结构index.htmlmain.js代码project.json文件启动流程导演节点节点常用基本属性节点坐标场景图层Layer精灵Sprite自定义精灵组合精灵定义FarmScene .jsFarm.jsHouse.js动画精灵定义person.jsPersonScene.js标签Label菜单Menu 目录结构 main.js设置启动的场景 projec...

qq_17080419的博客 966

cocos2d-js中使用动作序列,以及callFunc函数的使用问题

//创建文字提示    var gameOver = new cc.LabelTTF.create("GAMEOVER!","Arial",50);    gameOver.setPosition(cc.p(winSize.width / 2,winSize.height / 2));    this.addChild(gameOver);//创建动作:    //淡出    //var fade...

认真写bug的传奇 1349
上一篇: JS工程文件结构
下一篇: cocos2d-JS核心概念
AiCoding_D
博客等级 码龄11年 4粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值