-
Notifications
You must be signed in to change notification settings - Fork 1
Flash常见问题记录
frankwinter edited this page Dec 21, 2017
·
18 revisions
-
输出含有诸如🐲🐲💩💩💩❤️❤特殊字符的长度。
-
压缩PNG,可以调节清晰度。
-
adobe的AIR SDK更新方法, 以及官方推荐的方法,同样可以覆盖以前使用flex sdk的项目,以及,但是需要注意,即使这样,inline方法仍旧无法使用,只能新建一个使用asc2.0的项目才行。另外如果要使用Adobe的查看性能的工具Scout,项目最好使用asc2.0编译的项目,因为可以查看更详细的数据,普通flex 4.6项目很多数据无法查看。
-
adobe的SWF version列表
-
关于使用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
- 如何将字符串转化为Base64码
//如何将字符串转化为Base64码
var hello:String = "Hey";
//如下输出Ascii码值
var n:int = hello.charCodeAt(0); //72
var g:int = hello.charCodeAt(1); //101
var s:int = hello.charCodeAt(2); //121
//如下输出二进制字符串表达式(8位为一个字节)
trace(n.toString(2)); //01001000
trace(g.toString(2)); //01100101
trace(s.toString(2)); //01111001
//如下输出Base64数值, 2的6次方为64,所以取之前二进制的表达式,将其每六位作为一个组合
//010010 18 S
//000110 6 G
//010101 21 V
//111001 57 5
//如上每个组合的二进制转换为十进制数值为18,6,21,57
//然后对照Base64对照表,可以得出SGV5的结果