cocos creator知识点记录二:富文本、打字、昵称截断

    xiaoxiao2022-07-05  180

    知乎链接:

    Cocos Creator系列一: 导入DragonBones动画:https://zhuanlan.zhihu.com/p/59294829

    Cocos Creator系列二:基础知识(持续更新):https://zhuanlan.zhihu.com/p/59567183

    Cocos Creator系列三:网络同步机制,网络协议(持续更新):https://zhuanlan.zhihu.com/p/60883576

    Cocos Creator系列四:消息框架:https://zhuanlan.zhihu.com/p/63193440

    富文本:

    文案里配富文本标签,

    //str 字符串 index 需要获取index+1长度文字并加标签 public static getTagStrIndex(str:string,index:number):string { var tagIndex1 = str.indexOf('<',0); var tagIndex2 = str.indexOf('>',0); var html = ""; if(index>=this.getTagStrLen(str)) return ""; var tagStack: Array<string> = new Array<string>(); var i = 0; if(index<tagIndex1||tagIndex1==-1) { //没有标签 return str.substr(0,index+1); }else { //有标签 var curLen = 0; var curIndex = 0; // html += str.substr(0,tagIndex1); while(curLen<=index) { var needLen = index-curLen+1; if(tagIndex1!=-1&&needLen<=(tagIndex1-curIndex)) { //长度满足 for(i=0;i<tagStack.length;i++) { html += tagStack[i]; } html += str.substr(curIndex,needLen); for(i=tagStack.length-1;tagStack.length>0&&i>=0;i--) { if(tagStack[i][1]=='c') html += "</color>"; else if(tagStack[i][1]=='b') html += "</b>"; } return html; }else if(tagIndex1==-1) { //没有标签 var needLen = index-curLen+1; html += str.substr(curIndex,needLen); return html; } for(i=0;i<tagStack.length;i++) { html += tagStack[i]; } html += str.substr(curIndex,tagIndex1-curIndex); for(i=tagStack.length-1;i>=0;i--) { if(tagStack[i][1]=='c') html += "</color>"; else if(tagStack[i][1]=='b') html += "</b>"; } curLen += tagIndex1-curIndex; curIndex = tagIndex2+1; var tag = str.substring(tagIndex1,tagIndex2+1); if(tag[1]=='i') { curLen += 1; html += tag; }else if(tag[1]=='b'||tag[1]=='c'){ tagStack.push(tag); }else if(tag[1]=='/') { tagStack.pop(); } tagIndex1 = str.indexOf('<',curIndex); tagIndex2 = str.indexOf('>',curIndex); } } }

    打字效果:

    TypingWrite(label:cc.RichText,text:string) { if(this.typingWriteState) { label.string = this.blackString(text); this.typingWriteState = false; return; } this.typingWriteState = true; let len = GlobalFunction.getTagStrLen(text); let html = ""; let step = 0; this.func = function(){ html = GlobalFunction.getTagStrIndex(text,step); label.string = this.blackString(html); if(++step == len){ this.unschedule(this.func,this); label.string = this.blackString(text); this.typingWriteState = false; }else if(this.typingWriteState==false) { this.unschedule(this.func,this); label.string = this.blackString(text); } } this.schedule(this.func,0.05,cc.macro.REPEAT_FOREVER,0); this.questionLabel.node.active = true; label.string = ""; }

    昵称截断

    原文:https://forum.cocos.com/t/cocos-creator/76916

     

    最新回复(0)