在做遊戲的時候,有乙個特殊的需求引擎沒有直接提供。
一段label有一部分是其他顏色,
例如:「乙隻 優雅 的
攻城獅」
上面這個label,一般想到的常規方式是 用四個label拼接,放到不同的位置。
其實richtext是提供了這種功能的,用設定好的四個richelementtext就能實現。
但是相對來說比較繁瑣,而對於策劃來說比較難懂,後來協定的做法是用html文字格式來實現這種效果,也就是說給你一段html的文字,你就能顯示出相應的富文字的格式。
比如:
"產生一些正規表示式
隨機的碎片
,提高vip等級能獲得更多免費次數!
產生一些正規表示式
隨機的碎片"
上面採取的是簡化的html,當然其實你可以自己定,相應的**就會產生變化。
產生的結果如圖:
當然一行的長度可以自己控制。
先貼**,後面再做整理。(這裡用到的主要是一些簡單的正規表示式和字串處理,後面還會做優化,有問題一起討論)
var fontinfo = cc.class.extend(
});//富文字
var superrichtext = ccui.widget.extend(
if(typeof _args != "undefined")
if(typeof _fontsize != "undefined")
self.analysishtml(_string);
return self;
},setsize:function(_width, _height),
renderhtml:function(_json)
else if(obj.text != "")else if(obj.img != "")
}self.updateline();
},//解析html
analysishtml:function(_str);
htmljson["fontsize"] = self.m_defaultfontsize;
htmljson["color"] = "255,255,255";
htmljson["opacity"] = 255;
htmljson["fontname"] = res.font;
htmljson["text"] = str;
self.m_htmljsonlist.push(htmljson);
}while(begin >= 0)
}else;
htmljson["fontsize"] = self.m_defaultfontsize;
htmljson["color"] = "255,255,255";
htmljson["opacity"] = 255;
htmljson["fontname"] = res.font;
htmljson["text"] = _str;
self.m_htmljsonlist.push(htmljson);
}self.renderhtml(self.m_htmljsonlist);
console.log("analysis ended!");
},//解析屬性
analysisattr:function(_str),
lengthofstring:function(str)
else
}return len;
},addnewline:function(),
updateline:function()
maxheight+=size.height;
}self.setanchorpoint(cc.p(0, 0));
self.setcontentsize(maxwidth, maxheight);
}});
cocos2dx js 多層級列表
先上圖 如上圖所示,多層級列表可以展開其子層級列表 cocos2dx中有乙個tableview,使用它製作列表是乙個比較好的選擇 一般使用tableview製作的都是一級列表,這裡利用tableview來製作乙個多層級列表 下面直接上 檔案commonlist.js 多級列表 預設只渲染一級列表項 ...
cocos2dx js灰化高亮等等
給節點設定自定義的shader cc.node.prototype.setcustomshader function vsh,fsh,enable 判斷是不是widget if this.getvirtualrenderer null this.getvirtualrenderer getsprit...
cocos2dx js更換遊戲引擎版本(mac)
專案建立之初使用cocos2dx js 3.16的版本,但專案使用android studio 打包出來的apk包在部分機型上安裝不了,但公司其他專案使用cocos2dx js 3.15版本是沒問題的,於是將就需要首先切換電腦遊戲引擎版本。1 開啟終端,cd 到cocos2dx js 1.15引擎包...