文章插图
我们可以看到,创建一个新的TestPageUI界面,使用嵌入式模式生成TestPageUI.as文件共享3283字节,使用拆分模式时,生成的文件只有579字节 。图中右侧的绿色部分显示了代码的减法部分,为我们缩小合同范围80%左右的UI相关布局代码 。
文章插图
而在《大天使之剑H5》中,UI该布局目前有931个,使用这种方法帮助我们减少了1.8M的代码 。
2.删除类中未使用的导入
当我们发展的时候,手误import中输入的某些项目不使用的类,需要这些吗import删除 。如:import Sprite3D 类,2D游戏没用3D相关的事情,不需要导入 。
3.将在方法中this替换为局部变量
成为我们的AS3代码转换JS后,方法中类的属性名的访问形式,将在之前this. 这里的this能减少吗?如下图所示:
文章插图
上面有几种方法this 。如果把this用局部变量替换它,那就是下面的方法 。这就是了 。这里的局部变量是一个单字符变量,因为最后,我们的项目将使用UglifyJS来压,方法中定义的所有变量,只要不超过54个,将是单字符变量 。先看优化前,一共四个this,他们占领了16个字符 。优化后,四个this分成四份n,是4个字符,还有一个附加的赋值语句,该语句中间包含一个空格,手后面的分号,一共是11个字符,加上四个n就是15个字符,比优化前少一个字符 。如果我给这个方法再加一个this,优化前的代码,会增加4个字符,并且只需要添加优化的代码1个字符,所以在该方法中this越多,就越能减少 。因此:
文章插图
总而言之,只要方法this关键字超过3个,可以节省字符数 。而且this越多,你存的越多 。我正在编译它JS在代码中搜索,总共有将近18号个this,这样可以节省很多 。但是这个优化要注意,每个function是一个范围,在每个范围内this所有参考都不一样,所以在每个不同的范围内this分开计算,换句话说,如果该方法中有一个函数,那是在计算方法中this数量时,函数中出现的内容不应该计算this 。第二个,有一些方法,已经写了内部变量赋值是this的,然后你可以使用这个现有的变量,可以进一步减少字符 。这种优化最终节省了0.3M 。这种优化不仅优化了代码的大小,因为在JS里,局部变量的调用比this要高的,所以也可以加快游戏的运行效率 。
4.压缩包名称、类名、方法名、属性名
你在这一步做什么,是把UglifyJS默认压力的名称,我们用自己的方式打败了他 。
① 同名按同简称,输入代码中出现的相同名称,按相同的短名称 。
② obj.abc 与 obj[“abc”] 区别对待:
默认压缩规则:obj.abc 写入的属性名称将被压缩,obj[“abc”] 书写的字符串部分不会被压缩 。
这样想着,主要是因为UglifyJS考虑到一些属性名称被压缩,某些属性可能无法访问,UglifyJS方法是提供一个未按下的配置名称列表,但这只是一个配置列表,我们无法通过这个列表定位这些属性名在代码中的使用位置,有一定的局限性,因此,通过obj.abc 与 obj[“abc”] 区别对待,我们在写代码的时候可以用不同的方式告诉编译器,您想在这里按属性名吗 。
有人会有疑问,用obj[“abc”]的写法,会比obj.abc文字上还有三个字 。别担心,因为在最后UglifyJS当被压缩时,会将[]语法转换.语法的 。
③ 自定义标签 /*[ZIP-JSON]*/
为了不打破程序员的编程习惯,现在我们必须用字符串的形式来 。
当访问该属性时,想到了下面的解决办法:在字符串前添加/*[ZIP-JSON]*/
如:
文章插图
在我们常用的慢动作类的用法中,上图的“x”和“y”是属性名,默认情况下,字符串不会被压缩 。此时,我们可以添加/*[ZIP-JSON]*/标签,如:
文章插图
这样,“x”“y”它将被压缩成相应的名称 。
通过这些过程,我们的代码将以下列形式编写:
文章插图
形式1:label 该属性名,不会被压缩,在访问时,它也用自己的原名访问
形式2:label该属性名在定义时就被压缩了,可以通过并且会被压缩.语法访问
- 原手机号停用又忘记微信密码 微信密码忘记了怎么找回
- 微信重登如何找回聊天信息 微信重新登录后怎么恢复聊天记录
- 如何定位微信好友的位置 微信发定位怎么发
- 同一个wifi微信迁移不了 微信迁移聊天记录网络状况复杂
- 公务员机票在哪里购买
- 老款a6加油按钮在哪里
- 微信实名认证不是本人怎么改 微信实名认证怎么更改
- 微信怎么看谁浏览了你 看别人的朋友圈别人会知道吗
- 个人微信收款太多会被纳税吗 微信收款有限额吗
- 为什么店铺定位搜不到 如何将公司位置弄在微信定位上