位置: 编程技术 - 正文

cocos2dx3.4 Label

编辑:rootadmin

推荐整理分享cocos2dx3.4 Label,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

创建一个空的Label,具体属性以后再设置

static Label* create();

使用系统API创建一个Label, 参数包括 一个初始字符串 ,字体(字体名称或字体文件),字体大小,在分维度,水平对齐和垂直对齐。

static Label* createWithSystemFont(const std::string& text, const std::string& font, float fontSize, const Size& dimensions = Size::ZERO, TextHAlignment hAlignment = TextHAlignment::LEFT,

TextVAlignment vAlignment = TextVAlignment::TOP);

和上一个创建方式基本没区别,但是要注意的是 第二个参数不同,createWithSystemFont 这个是字体名称或者字体文件,而这个是创建方式的第二个参数只能是字体文件 而不支持字体名称

Label* a = Label::createWithTTF("cocos2dx", "宋体", ); //这个创建方式会直接中断掉的a->setPosition(Point(, ));addChild(a);

static Label * createWithTTF(const std::string& text, const std::string& fontFile, float fontSize, const Size& dimensions = Size::ZERO, TextHAlignment hAlignment = TextHAlignment::LEFT,

TextVAlignment vAlignment = TextVAlignment::TOP);

和上一个创建方式和要求都一样,不同的是第一个参数要求为TTFConfig的结构体

TTFConfig config("fonts/Marker Felt.ttf",); auto label1 = Label::createWithTTF(config, "Hello Cocos2d-x");label1->setPosition(Point(size.width/2, size.height*0.8));addChild(label1);

static Label* createWithTTF(const TTFConfig& ttfConfig, const std::string& text, TextHAlignment alignment = TextHAlignment::LEFT, int maxLineWidth = 0);

通过静态字体文件创建文本的方式,参数为fnt文件和对应的png图片

&#;得注意的是:在2.x中,可以使用getChildByTag(i)来获取第i个字符,对其单独设置属性、动作等。在3.x中,则是使用getLetter(i),而不再是getChildByTag(i)。static Label* createWithBMFont(const std::string& bmfontFilePath, const std::string& text, const TextHAlignment& alignment = TextHAlignment::LEFT, int maxLineWidth = 0, const Vec2& imageOffset = Vec2::ZERO);

cocos2dx3.4  Label

这个是和2.x中Atlas形式创建对应的。不过这种有两种形式匹配图片中的文字,一种是直接设置每一块字体的宽高数&#;获取,另一种是通过fnt文件的方式,但原理都是一样的。 一般用来显示数字,渲染效率高

auto label4 = Label::createWithCharMap("fonts/tuffy_bold_italic-charmap.plist");label4->setPosition(Point(size.width / 2, size.height*0.2));addChild(label4);label4->setString("Cocos2d-x"); auto label4 = Label::createWithCharMap("fonts/tuffy_bold_italic-charmap.png",,,' ');label4->setPosition(Point(size.width / 2, size.height*0.2));addChild(label4);label4->setString("Cocos2d-x");

static Label * createWithCharMap(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap);

static Label * createWithCharMap(Texture2D* texture, int itemWidth, int itemHeight, int startCharMap);

static Label * createWithCharMap(const std::string& plistFile);

//改变字符串内容并重新渲染 //注:如果你没有为Label设置TTF/BMFont/CharMap,会产生很大的开销 virtual void setString(const std::string& text) override; virtual const std::string& getString() const override { return _originalUTF8String; } 设置文字颜色,仅支持TTF和System Font 注:区别 Node节点的颜色 Node ::setColor : Color3B Label::setTextColor : Color4B virtual void setTextColor(const Color4B &color); const Color4B& getTextColor() const { return _textColor; } 获取Label的某个字符 - getLetter - 不支持System Font

* 文字渲染效果 - Shadow : 阴影

- Outline : 轮廓,仅支持TTF

- Glow : 发光,仅支持TTF

对齐方式 > TextHAlignment : 水平对齐方式 - TextHAlignment:LEFT : 左对齐 - TextHAlignment:CENTER : 居中对齐,默认 - TextHAlignment:RIGHT : 右对齐 > TextVAlignment : 垂直对齐方式

- TextVAlignment::TOP : 顶部,默认 - TextVAlignment::CENTER : 中心 - TextVAlignment::BOTTOM : 底部**/ //设置对齐方式 void setAlignment(TextHAlignment hAlignment) { setAlignment(hAlignment,_vAlignment);} void setAlignment(TextHAlignment hAlignment,TextVAlignment vAlignment); TextHAlignment getTextAlignment() const { return _hAlignment;} //设置水平对齐方式 void setHorizontalAlignment(TextHAlignment hAlignment) { setAlignment(hAlignment,_vAlignment); } TextHAlignment getHorizontalAlignment() const { return _hAlignment; } //设置垂直对齐方式 void setVerticalAlignment(TextVAlignment vAlignment) { setAlignment(_hAlignment,vAlignment); } TextVAlignment getVerticalAlignment() const { return _vAlignment; }

/*** Label尺寸大小* - setLineBreakWithoutSpace : 开启自动换行功能* - setMaxLineWidth : 文字内容的最大行宽* - setWidth : Label尺寸大小,宽* - setHeight : Label尺寸大小,高* - setDimensions : Label尺寸大小**/ //是否开启自动换行功能 void setLineBreakWithoutSpace(bool breakWithoutSpace); //最大行宽,内容超过MaxLineWidth,就会自动换行 //前提条件: 仅在width==0时,起作用。 // > width == 0; // > setMaxLineWidth(lineWidth); // > setLineBreakWithoutSpace(true); //它的效果与下面是类&#;的. // > setWidth(lineWidth); // > setLineBreakWithoutSpace(true); //只是width==0时,就无法设置文本的对齐方式了. void setMaxLineWidth(unsigned int maxLineWidth); unsigned int getMaxLineWidth() { return _maxLineWidth;} //设置Label的尺寸大小 //可以理解为Label的文本框大小 //当setLineBreakWithoutSpace(true)时,内容超过width,会自动换行 //并且内容支持文本的对齐方式 //注:设置尺寸大小,使用的是setDimensions,而不是setContentSize ! void setWidth(unsigned int width) { setDimensions(width,_labelHeight); } void setHeight(unsigned int height){ setDimensions(_labelWidth,height); } void setDimensions(unsigned int width,unsigned int height); unsigned int getWidth() const { return _labelWidth; } unsigned int getHeight() const { return _labelHeight; } const Size& getDimensions() const{ return _labelDimensions; } /*** v3.2 新增* - setLineHeight : 设置行间距* - setAdditionalKerning : 设置文字间距* - getStringLength : 字符串内容长度*/ //设置行间距,不支持system font void setLineHeight(float height); float getLineHeight() const; //设置文字间距,不支持system font void setAdditionalKerning(float space); float getAdditionalKerning() const; //获取Label的字符串内容长度 int getStringLength() const; 重写Node父类的方法 - setBlendFunc : 混合模式 - setScale : 放缩字体大小 - addChild : 添加子节点 - getDescription : 显示Label的描述 //设置颜色混合模式 virtual void setBlendFunc(const BlendFunc &blendFunc) override; //放缩字体大小(一般用于CharMap、BMFont) virtual void setScale(float scale) override; virtual void setScaleX(float scaleX) override; virtual void setScaleY(float scaleY) override; virtual float getScaleX() const override; virtual float getScaleY() const override; //添加子节点 virtual void addChild(Node * child, int zOrder=0, int tag=0) override; virtual void sortAllChildren() override; //Label描述 virtual std::string getDescription() const override;};

【文字渲染效果】支持三种渲染效果:Shadow:阴影Outline:轮廓,仅支持TTFGlow:发光,仅支持TTF注:其中Outline与Glow两个效果,只会作用一个。即无法一起使用。使用举例: Label* lb = Label::createWithTTF("abc", "fonts/Marker Felt.ttf", ); lb->setPosition(visibleSize / 2); this->addChild(lb); lb->enableShadow(Color4B::GREEN, Size(, )); //阴影 lb->enableOutline(Color4B::RED, 3); //轮廓 //lb->enableGlow(Color4B::GREEN); //发光 //取消阴影、轮廓、发光效果 //lb->disableEffect();【对齐方式】TextHAlignment:水平对齐方式* TextHAlignment:LEFT:左对齐* TextHAlignment:CENTER:居中对齐,默认* TextHAlignment:RIGHT:右对齐TextVAlignment:垂直对齐方式* TextVAlignment::TOP:顶部,默认* TextVAlignment::CENTER:中心* TextVAlignment::BOTTOM:底部仅在设置了Label的尺寸大小setDimensions(width,height),大于显示的字符串内容的尺寸大小,才会起作用。对齐方式举例,如下几张图片所示:对齐方式为:TextHAlignment:LEFTTextVAlignment::TOP【自动换行】在3.x中,自动换行有两种方式。(当然你也可以使用C&#;&#;里的转移字符''进行手动换行)利用lb->setLineBreakWithoutSpace(true),来支持自动换行功能。利用setMaxLineWidth(maxLineWidth),来控制自动换行。利用setDimensions(width,height),来控制自动换行。利用setMaxLineWidth设置每行显示文字的最大宽度。注:这种方法仅在Labelwidth==0的情况下,才会有效。 lb->setLineBreakWithoutSpace(true); lb->setMaxLineWidth(); //最大宽度利用setDimensions使用方法: lb->setLineBreakWithoutSpace(true); lb->setWidth(); //设置Label尺寸宽 lb->setMaxLineWidth(); //设置了Label width,这个就无效【文字间距】间距的调整,可以设置文本内容的行间距与文字间距。注:不支持SystemFont。setLineHeight:设置行间距setAdditionalKerning:设置额外文字间距使用举例:lb->setLineHeight(); lb->setAdditionalKerning();【单独设置某个字符】学过2.x中的LabelBMFont的同学,应该知道这个是怎么回事吧?在3.x中,使用TTF、CharMap、BMFont创建的文字标签,其字符串内容的每个字符都是一个Sprite精灵图片,可以对其进行单独的设置。如精灵放缩、执行动作等。注:不支持SystemFont。lb->getStringLength():获取字符串内容的总长度lb->getLetter(i):获取第i个位置上的字符使用举例: Label* lb = Label::createWithTTF("abc", "fonts/Marker Felt.ttf", ); lb->setPosition(visibleSize / 2); this->addChild(lb); //获取字符串总长度,length = 6 CCLOG("%d", lb->getStringLength()); //获取第1个字符 Sprite* letter1 = lb->getLetter(1); letter1->setColor(Color3B::GREEN); //设置颜色 letter1->setScale(2.0f); //放缩 //获取第4个字符 Sprite* letter4 = lb->getLetter(4); letter4->setColor(Color3B::RED); //设置颜色 letter4->runAction(RepeatForever::create(RotateBy::create(1.0f, ))); //执行旋转动作参考文章

[置顶] cocos2d-x 3.5版 关于Console模块 cocos2d-x引擎发展的日益完善,更新了很多小工具。这个Console模块是一个控制台调试工具,可以实现远程调试,用用还是蛮有意思的。看AppDelegate.cpp里面

CCEditBox实现原理 今天使用了EditBox,记录下几点重要的,可以说是CCEditBox实现原理1.CCEditBox继承CCControlButton,CCIMEDelegate2.CCEditBox实现了touchDownAction方法,并在CCEditBox::initWi

【COCOS2DX-游戏开发之三八】ClippingNode 制作标题闪亮特效 1.用ClippingNode可以实现上面的效果2.以标题作为模板,光效经过ClippingNode(裁剪节点),裁剪掉多余的部分3.附带上lua代码--1.创建模板、ClippingNode(裁剪节点)loca

标签: cocos2dx3.4 Label

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

上一篇:cocos2d::DrawPrimitives和DrawNode分别实现画板功能

下一篇:[置顶] cocos2d-x 3.5版 关于Console模块([置顶]电影名字《收件人不详》)

  • 以房抵债的房子交房产税吗
  • 计提税金是什么会计科目
  • 金税工程是什么单位
  • 公司注销,账务怎么处理
  • 小微企业公司章程范本
  • 一般纳税人印花税是季报还是月报
  • 成本占收入比重分析
  • 企业收到的捐赠应计入
  • 资产负债表中存货项目金额怎么算
  • 购进农产品取得3%专票怎样计算抵扣举例
  • 高速公路通行费发票可以抵扣增值税吗
  • 装订会计账簿的方法
  • 前期物业开办费和承接费一样吗
  • 免息分期怎么还款
  • 供电局预收电费
  • 别人借用我的pos刷卡套现谁承担
  • 劳务公司购买材料怎么做账
  • 金税盘发票号码确认显示不全
  • 电脑在固定资产中属于哪一类
  • 软件开发公司的运营模式
  • 差旅费补助计入什么科目
  • 增值税专用发票抵扣期限
  • 罚款收入增值税税率是多少
  • 小规模纳税人附加税会计分录
  • 在产品的成本
  • 企业筹建期购买设备是否可以扣除
  • 收到财政补助资金怎么办
  • 个人公积金公司这178,个人交多少
  • 外购公司的长期投资如何做账
  • 筹办期间的筹办费用支出
  • 负债转为投资 资本增加吗
  • 中小企业的界定标准是什么
  • 进项税和销项税怎么算
  • 代缴社保怎么做账
  • php解密在线
  • 如何才能显示效果更好
  • 买新车注意事项与提车流程
  • 潜水时看到的鱼
  • 应收账款如何做会计分录
  • php实现自动识别的方法
  • cvg模型
  • vue.js.
  • [Vue warn]: Error in render: “TypeError: Cannot read properties of undefined(reading“category1Name“
  • 税费滞纳金计入增值税吗
  • username命令
  • 进项税额转出加计抵减会计分录
  • 开通对公账号怎么办理
  • 含消费税的商品开成了不含消费税怎么办
  • python 进程pid
  • 电子发票开出后如何查看
  • 股权投资都有哪些
  • 企业月末在产品数量变化不大时,最适宜
  • sql查询语句大全实例教程
  • 应付账款入账金额可以包括哪些内容?
  • 营改增企业是什么意思
  • 工会年末结余会计分录
  • 设备投资要开票吗
  • 累计减免所得税
  • 开票加的税点走什么费用
  • 一般户可以发工资有什么后果
  • 增值税留抵退税申请流程
  • 医药企业研发费用构成
  • 批量更新数据库最多多少条
  • win10电脑系统配置
  • win10的win+tab
  • 使用组策略可控制什么
  • winxp win10哪个快
  • win10开机自动启动软件怎么设置
  • win7的语言栏不见了
  • win10系统怎么cmd
  • unity3d性能优化之贴图科普篇
  • 求链表内节点的指针
  • bat批处理命令大全
  • list在python中的作用
  • unity获取鼠标点击的位置
  • js修改css文件
  • jquery获取复选框是否被选中
  • 海南税务局增值税按次缴纳
  • 陕西国税电子税务局app
  • 上海川沙十八铺市场
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设