lufy's legend

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 13524|回复: 2

LTextField 添加描边的修改

[复制链接]

14

主题

0

好友

132

积分

士兵

Rank: 1

发表于 2013-12-2 11:10:59 |显示全部楼层
构造函数中添加
s.attachStroke = false;//填充并且描边。
    s.attachStrokeColor = "#ffffff";

重写

show:function (){
                var s = this,c = LGlobal.canvas;
                if(!s.visible)return;
                c.save();
                c.font = s.weight + " " + s.size+"pt "+s.font;
                c.textAlign = s.textAlign;
                c.textBaseline = s.textBaseline;
                c.lineWidth = s.lineWidth;
                if(s.filters){
                        s.setShadow();
                }
                if(s.alpha < 1){
                        c.globalAlpha = s.alpha;
                }
                if(s.mask != null && s.mask.show){
                        s.mask.show();
                        c.clip();
                }
                if(s.blendMode){
                        c.globalCompositeOperation = s.blendMode;
                }

                s._transformScale();

                s._transformRotate();
                if(s.x != 0 || s.y != 0)c.transform(1,0,0,1,s.x,s.y);
                if(s.texttype == LTextFieldType.INPUT){
                        if(s.x != 0 || s.y != 0){
                                s.inputBackLayer.show();
                        }
                        var rc = s.getRootCoordinate();
                            if(LGlobal.inputBox.name == "input"+s.objectIndex){
                                    LGlobal.inputBox.style.marginTop = (rc.y) + "px";
                                    LGlobal.inputBox.style.marginLeft = (rc.x) + "px";
                            }
                }
                var lbl = s.text;
                if(s.displayAsPassword){
                        lbl = '';
                        for(var i=0,l=s.text.length;i<l;i++)lbl+='*';
                }
                var d;
        var ds; // 专门描绘附加描边
                if(s.stroke){
                        c.strokeStyle = s.color;
                        d = c.strokeText;
                }else{
            //附加描边
            if(s.attachStroke){
                ds = c.strokeText;
            }
                        c.fillStyle = s.color;
                        d = c.fillText;
                }
                if(s.wordWrap){
                        var i,l,j=0,k=0,m=0;
                        for(i=0,l=s.text.length;i<l;i++){
                                j = c.measureText(s.text.substr(k,i-k)).width;
                                if(j > s.width){
                                        j = 0;
                                        k = i;
                                        m++;
                                }
                                d.apply(c,[lbl.substr(i,1),j,m*s.wordHeight,c.measureText(lbl).width]);
                if(ds instanceof Function){
                    c.strokeStyle = s.attachStrokeColor; //修改处
                    ds.apply(c,[lbl.substr(i,1),j,m*s.wordHeight,c.measureText(lbl).width]);
                }
                        }
                        s.height = m*s.wordHeight;
                }else{
                        d.apply(c,[lbl,0,0,c.measureText(lbl).width]);
            if(ds instanceof Function){
                c.strokeStyle = s.attachStrokeColor; //修改处
                ds.apply(c,[lbl,0,0,c.measureText(lbl).width]);
            }
                }
                if(s.wind_flag){
                        s.windRun();
                }
                c.restore();
        },
回复

使用道具 举报

14

主题

0

好友

132

积分

士兵

Rank: 1

发表于 2013-12-2 11:11:28 |显示全部楼层
经我测试实际效果一般,希望有更好的解决描边的方法。
回复

使用道具 举报

37

主题

8

好友

9309

积分

诸侯王

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

发表于 2013-12-3 00:52:43 |显示全部楼层
陈前帆 发表于 2013-12-2 11:11
经我测试实际效果一般,希望有更好的解决描边的方法。

引擎中有光晕效果,就是影子了,可以在文字四周加上光晕,类似于描边效果。
描边相当于绘制两边文字,效率不可能兼得了。
不回答与技术和引擎不相关的问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

防止垃圾广告,请填写任意字符

Archiver|lufy's legend

GMT+8, 2024-4-16 22:41 , Processed in 0.048999 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部