[]emoji表情文字乱码

最近在使用laya开发小游戏,发现微信名字里带的emoji表情符号用laya绘制出来是乱码,请问有谁遇到过相同的情况么?求解决方案啊
QQ截图20180517121447.png
已邀请:

jonathang4

赞同来自:

这问题是石沉大海的节奏?

赞同来自:

改下webgl上就支持emoji了

S_Shine

赞同来自:

/**
*...特殊的字符,如泰文,必须重新实现这个类
*/
//class laya.webgl.text.CharSegment
var CharSegment=(function(){
    function CharSegment(){
        this._sourceStr=null;
    } 
    __class(CharSegment,'laya.webgl.text.CharSegment');
    var __proto=CharSegment.prototype;
    Laya.imps(__proto,{"laya.webgl.text.ICharSegment":true})
    __proto.textToSpit=function(str){
        this._sourceStr=str;
        var texLen = str.length;
        var idx = -1;
        this._words = ;
        while (++idx < texLen) {
            var character = str.charAt(idx);
            var code = str.charCodeAt(idx);
            if (code >= 0xD800 && code <= 0xDBFF) {
                this._words.push(character + str.charAt(++idx));
            } else {
                this._words.push(character);
            }
        }
    } 
    __proto.getChar=function(i){
        return this._words;
    } 
    __proto.getCharCode=function(i){
        return this._words[i].codePointAt(0);
    } 
    __proto.length=function(){
        return this._words.length;
    } 
    return CharSegment;
})()
[/i]
 
[i]把上面的类改一下就可以支持了,如果要htmlelement也支持,改一下:[/i]
    __proto._getWords=function(){
        if (!Text.CharacterCache)return this._getWords2();
        var txt=this._text.text;
        if (!txt || txt.length===0)
            return null;
        var words=this._text.words;
        var idx = -1;
        var texLen = txt.length;
        var w = [];
        while (++idx < texLen) {
            var character = txt.charAt(idx);
            var code = txt.charCodeAt(idx);
            if (code >= 0xD800 && code <= 0xDBFF) {
                w.push(character + txt.charAt(++idx));
            } else {
                w.push(character);
            }
        }
        if (words && words.length===w.length)
            return words;
        words===null && (this._text.words=words=[]);
        words.length=w.length;
        var size;
        var style=this.style;
        var fontStr=style.font;
        var startX=0;
        for(var i=0,l=w.length;i<l;i++){
            size=Utils.measureText(w[i],fontStr);
            var tHTMLChar=words[i]=new HTMLChar(w[i],size.width,size.height||style.fontSize,style);
            if (this.href){
                var tSprite=new Sprite();
                this.addChild(tSprite);
                tHTMLChar.setSprite(tSprite);
            }
        }
        return words;
    }
 

chen

赞同来自:

用Text 也不行,显示还是特殊符号,不能自动变成表情或者emoji的。有没有其他方法显示解决呢

要回复问题请先

商务合作
商务合作