游戏中经常会遇到需要显示数字(比如金钱数量,战斗力等等),美术UI同学会给图片资源,然后我们程序同学得写逻辑实现需求。

以前做页游用as3.0也写过数字图片,现在入坑cococs后,好多东西得重新写一遍,不过没关系。逻辑都是差不多的

下面直接给刚入坑的小伙伴们分享刚完成的源码,我自己测试很多遍了,性能也做了优化,可以直接拿到项目使用。

const {ccclass, property} = cc._decorator;/*** @author Maniac.guo* Everyone should have a dream , what if it came true ?* @className 图片数字组件* @data 2018年5月18日* @mailbox 309506117@qq.com*/
@ccclass
export class NumberSpriteComponent extends cc.Component {@property(cc.SpriteAtlas)sprAtlas:cc.SpriteAtlas = null;private _poolArr:Array<any> = [];onLoad() {}// public loadTexture( texturePath:string = "res/game/laba_haiyang.png",callBack:Function = null ) :void {// this._callBack = callBack;// let self = this;// if(self._sprAtlas){//     self._callBack();// }else{//     cc.loader.loadRes(texturePath, cc.SpriteAtlas, function (err, atlas:cc.SpriteAtlas) {//         self._sprAtlas = atlas;//         self._callBack();//     })// }// }public getNodeFromPool( index:number ) : cc.Node {let numNode:cc.Node = null;let numSpr:cc.Sprite = null;if(this._poolArr.length == 0 || (index+1) > this._poolArr.length){numNode = new cc.Node();numSpr = numNode.addComponent(cc.Sprite);this._poolArr.push(numNode);}numNode = this._poolArr[index];if(numNode.parent){numNode.parent.removeChild(numNode);}return numNode;}public showNumber( num:number, frameName:string = "num2-" ) : void {if(this.sprAtlas == null)return;this.removeReset();let numArr:string[] = num.toString().split("");let numNode:cc.Node = null;let numSpr:cc.Sprite = null;for(let i:number = 0 ; i < numArr.length ; i++){numNode = this.getNodeFromPool(i);this.node.addChild(numNode);numSpr = numNode.getComponent(cc.Sprite);let s:string = numArr[i];numSpr.spriteFrame = this.sprAtlas.getSpriteFrame(frameName+s);numNode.x = (numSpr.spriteFrame.getRect().width+2)*i;} }private removeReset() : void {this.node.removeAllChildren();}start () {}}

如果有不懂的小伙伴可以直接留言!

附上使用截图:

直接绑定脚本


显示效果:



使用逻辑:

let numSprNode:cc.Node = this.node.getChildByName("numSpr");let sprNode1:cc.Node = numSprNode.getChildByName("num1");let sprNode2:cc.Node = numSprNode.getChildByName("num2");let sprNode3:cc.Node = numSprNode.getChildByName("num3");this.numComponent1 = sprNode1.getComponent(NumberSpriteComponent);this.numComponent1.showNumber(4569821364);let numComponent2:NumberSpriteComponent = sprNode2.getComponent(NumberSpriteComponent);numComponent2.showNumber(253615879);let numComponent3:NumberSpriteComponent = sprNode3.getComponent(NumberSpriteComponent);numComponent3.showNumber(78654123);



Cocos Creator TypeScript 实现自定义数字图片组件NumberSpriteComponent相关推荐

  1. 鸿蒙os事例代码,鸿蒙HarmonyOS App开发造轮子之自定义圆形图片组件的实例代码

    一.背景 在采用Java配合xml布局编写鸿蒙app页面的时候,发现sdk自带的Image组件并不能将图片设置成圆形,反复了翻阅了官方API手册(主要查阅了Compont和Image相关的API),起 ...

  2. vue封装自定义数字键盘组件

    最近在公司做一个项目,简单来说就是web端微信公众号上的一个申请表单页面,随便如个图 环境: vue框架 + vant组件库 + 其它(这里用不上的,不说) 具体如图: 都知道,input输入框如果不 ...

  3. vue 自定义键盘组件_使用Vue自定义数字键盘组件的方法

    这篇文章主要介绍了关于使用Vue自定义数字键盘组件的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 最近做 Vue 开发,因为有不少页面涉及到金额输入,产品老是觉得用原生的 inp ...

  4. Cocos Creator TypeScript 套牛游戏(可微信小游戏)

    视频操作地址:https://www.bilibili.com/video/BV1NN4y1V7Jy/?vd_source=0a0b591838e1a4cda6ec55da0e1c9019 源码地址: ...

  5. cocos creator 学习随笔 day03 节点和组件属性

    目录 节点本身属性 控件属性 场景 空节点 3D对象 2D对象 UI组件 光线 特效 摄像机 地形 节点本身属性 第一栏为节点名,可修改,前面得勾,是表示是否使用该节点,去掉代表隐藏该节点,但是该节点 ...

  6. 【cocos creator 3.x】精灵图片不显示

    精灵图片不显示 现象 原因 解决方案 现象 在cocos creator 3.2版本的使用中遇到了精灵图片无法展示的几个场景: 在prefab某个node下Sprite的图片无法显示 动态加载pref ...

  7. cocos creator做一个儿童数字答题的微信小游戏(1)

    接了个外包要做个数字答题的微信小游戏 给小学生玩的 准备大概15天完成吧,每天抽点一两个小时做一下 今天第一天先做主界面,先用cocos creator拼一个主界面出来 下面的每个按钮都是一个butt ...

  8. 【Cocos creator】绘图系统:Graphics组件之动态改变生成图像的透明度

    在Cocos creator 中,要想在使用Graphics组件绘制图像的过程中改变图像的透明度有两种方法: 1.在编辑器中Graphics组件的fillColor属性中设置: 2.通过代码动态设置. ...

  9. HarmonyOS图片,HarmonyOS App开发造轮子--自定义圆形图片组件

    一.背景 在采用Java配合xml布局编写鸿蒙app页面的时候,发现sdk自带的Image组件并不能将图片设置成圆形,反复了翻阅了官方API手册(主要查阅了Compont和Image相关的API),起 ...

最新文章

  1. Git 取消上一次commit操作,但保留add操作
  2. import export php,import与export在node.js中的使用方法
  3. All in one:如何搭建端到端可观测体系
  4. 对话农民丰收节交易会-农业大健康·弘本农业:功能农业扶贫
  5. Mongodb的集合插入一个字段
  6. 大型网站系统架构实践(五)深入探讨web应用高可用方案
  7. 3GPP Release、TSG、RAN等概念介绍
  8. php 表情选择,php imagettftext和特定的表情符号
  9. 订餐系统jsp模板_java|web|jsp网上订餐系统|餐饮管理|在线点餐外卖网站|源码代码...
  10. NOD32企业版授权文件过期后的应急处理(病毒病义更新)
  11. win7下 Windows Process Activation Service 服务导致的 iis无法启动的解决方法
  12. matlab怎样画一个立方体,matlab画立方体
  13. 北鲲云超算平台能为教育科研做什么
  14. 美团因拖欠骑手工资被约谈;传苹果6月6日举办全球开发者大会;Linux 5.18开始启动停止支持ReiserFS|极客头条
  15. 汇编实现数字的输入与输出
  16. 练习:数字时钟(Python 自定义类)
  17. U盘文件如何恢复?u盘还原,必学的4招(2023已更新)
  18. OpenCV实战5 车牌号识别
  19. 模拟语音加密的置乱技术简介
  20. 【网络通信】详解NIO、select

热门文章

  1. 项目管理最重要的工具之一——甘特图
  2. 7-19 支票面额 (15 分) 一个采购员去银行兑换一张y元f分的支票,结果出纳员错给了f元y分。采购员用去了n分之后才发觉有错,于是清点了余额尚有2y元2f分,问该支票面额是多少?
  3. MFC加载图标,位图。LoadImage LoadIcon, LoadBitmap
  4. 【TortoiseGit】本地仓库文件夹无故出红色叹号
  5. 关于javax.validation.Validator校验的使用
  6. 计算两个数平均值的三种方法
  7. 斐讯K3降级CFE助手 小白一键生成降级CFE固件文件 212/217/246/260
  8. camille下的frida与mumu模拟器连接,进行隐私合规检测
  9. 互联网早报 | 滴滴推出百亿补贴活动;阿里巴巴三总部三中心落户上海;美团点评正式更名为“美团”...
  10. 信息融跨共享,捷码综合交通运行监测系统共建智慧交通