[LayaAir 1.0]laya 1.0 源码中 RunDriver.as里measureText的问题

private static var hanzi:RegExp = new RegExp("^[\u4E00-\u9FA5]$");
private static var fontMap:Array = ;
public static var measureText:Function = function(txt:String, font:String):* {
var isChinese:Boolean = hanzi.test(txt);
if (isChinese && fontMap[font]) {
return fontMap[font];
}

var ctx:* = Browser.context;
ctx.font = font;

var r:* = ctx.measureText(txt);
if (isChinese) fontMap[font] = r;
return r;
}
相关源码如上所示
因为最近看性能,发现context.measureText性能堪忧,所以想试图做个缓存,
 
然后看到RunDriver里有这个代码,然后看了又看,不太确定这段代码的意图,
为什么它是把字体而不是文字作key,但是存储的值又是取的该字体下文字测量出的宽度呢,
照理说如果第一次查询雅黑“啊啊”,它可能返回2个汉字的宽度,第二次查询雅黑“嘤嘤嘤”,因为发现雅黑有缓存,所以它就取出缓存里“啊啊”的宽度了??
已邀请:

ygp

赞同来自:

有性感大佬在线回一下这个问题吗?

要回复问题请先

商务合作
商务合作