Skip to content

Flash常见问题记录

frankwinter edited this page Dec 19, 2017 · 18 revisions

Flash常见问题记录:

  • 输出含有诸如🐲🐲💩💩💩❤️❤特殊字符的长度

  • 压缩PNG,可以调节清晰度

  • adobe的AIR SDK更新方法, 以及官方推荐的方法,同样可以覆盖以前使用flex sdk的项目以及,但是需要注意,即使这样,inline方法仍旧无法使用,只能新建一个使用asc2.0的项目才行。另外如果要使用Adobe的查看性能的工具Scout,项目最好使用asc2.0编译的项目,因为可以查看更详细的数据,普通flex 4.6项目很多数据无法查看。

  • adobe的SWF version列表

  • 关于SWF version和target player的讨论,还有这篇, 以及

  • 关于使用swfobject.js嵌入swf无法播放的问题,请参考swfobject.js项目中的issue讨论。或者是墨客。

  • 使用swfobject.js嵌入swf,发现chrome会有个小swf闪烁一下(尺寸300 * 150),这是由于swfobject会进行版本预判,动态创建一个swf的原因,可以将其隐藏起来。(在testPlayerVersion方法中,添加o.setAttribute("hidden", true);即可,或者是o.style.visibility = "hidden";如果是前一个,那获取版本的方法就不会执行,后一种会执行,所以需要执行版本检测的用后一种)。

  • 在chrome中发现使用swfobject.js嵌入swf后,默认暂停,请参考该解决方案。

  • as3的String.replace如果传入一个function,那需要注意该function返回匹配索引时,如果是汉字,可能会以字节数为基准进行返回(也就是一个汉字字符占用了3个普通的字符的大小)

function replaceString(str:String, ...args):String{
	var r:RegExp, provider:Object;
	if(args.length == 1 && typeof(args[0]) == "object" && !(args[0] is Array)){
		r = /\((?i:[a-z]++)\) | \{(?i:[a-z]++)\} | \[(?i:[a-z]++)\]/gx;
		provider = args[0] as Object;
	}
	else{
		r = /\(\d+\) | \{\d+\} | \[\d+\]/gx;
		if(args[0] is Array){
			provider = args[0] as Array;
		}
		else{
			provider = args;
		}
	}
	str = str.replace(r, function(match:String, ...t):String{
		trace(t[0]); //这里注意,返回的是9,21
		return provider[match.slice(1, match.length - 1)];
	});
	return str;
}
var str:String = "这可能{0}是一个{1}";
var bytes:ByteArray = new ByteArray();
bytes.writeMultiByte("这可能", "utf-8");
bytes.position = 0;
trace(bytes.length); //9,并不是3
trace(replaceString(str, "就", "bug")); //这可能就是一个bug
Clone this wiki locally