[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个汉字的宽度,第二次查询雅黑“嘤嘤嘤”,因为发现雅黑有缓存,所以它就取出缓存里“啊啊”的宽度了??
没有找到相关结果
									已邀请:
																	
							要回复问题请先登录
1 个回复
ygp
赞同来自: