Category: Develop


为iPhone App切图的技巧

为了支持iPhone 4的视网膜屏,我们开发App时要准备两套大小的图片资源。一般情况下,设计师就只做好高分辨率的Layout,我们在切图的时候多存一个缩小的版本。切图的工作本来就繁琐,现在居然还增加了一倍工作量,实在难以忍受。所以今天我们就来探讨一下利用工具提高效率的做法。

说明:有一些图片不能直接缩小,为了追求UI设计像素级精确的美感,设计师应该做好两套Layout。

我们从设计师处拿到的PSD文件通常是这样的:

首先要做些必要的处理,该删除的删除,合并的合并。然后给每个将要导出的图层取好名字。整理完成后的PSD如下:

一层一层裁切导出太麻烦,自动化才是王道。接下来我们执行Files>Scripts>Export Layers to Files...命令,打开如下窗口: View full article »

前文我们介绍了GC的工作机制和帮助GC更好工作的最佳实践。其实只要我们遵守谁创建谁清理的原则来管理对象,就能基本上避免回收失败,也就是我们通常说的内存泄漏问题。但是在实际项目中我们还会看到各种原因引起的内存泄漏,接下来就让我们一起来找出病因。

首先我们需要观察症状,也就是内存的使用曲线。排查的方法是反复执行一些创建和删除对象的方法、反复加载和卸载子文件。如果内存曲线一路飙升、或者是居高不下,都表明发生了内存泄漏问题。观察内存占用可以直接求助于操作系统的资源管理器,也可以用Hi-ReS-Stats这个类。

第二个需要观察的地方,是Player输出的load和unload信息。加载和卸载外部文件,是内存泄漏问题的重灾区。在调试阶段,我一般会在主文件加一个执行System.gc()语句的按钮。一旦卸载了一个子文件,就手动触发若干次GC。如果没有输出子文件的卸载信息,那么就说明出现泄漏了。 View full article »

在《给AS程序员的一点建议一文》中我提到了释放资源的重要性。最近在一些项目过程中我又对这方面有了更多的理解,在此希望能够分享给大家。首先让我们来回顾一下关于垃圾回收(Garbage Collection,下文简称GC)的一些知识。要阅读本文,你需要对GC机制有些基本认识。

在ActionScript中,我们没有API可以直接删除一个对象,也不能控制Player进行GC。但是GC的行为是可以预估的,作为开发者,我们需要了解的是GC执行的时机是发生在需要向操作系统请求分配内存的时候。

从上面的模拟图我们可以看到:

  • Player以块的方式请求和释放内存。GC的结果不一定就是更少的内存占用,也有可能是从操作系统获得更多的可用内存。
  • Player会在某些GC过程中把内存中未使用部分组合成可以释放的块还给操作系统。
  • 此外还要注意的是Player为了避免占用太多的CPU资源,会将一些GC操作分到不同的时间片中运行,所以一次GC过程并不一定清理完所有可回收资源。

一次GC过程(GC Pass)分为以下两个步骤: View full article »

Powered by KevinCao.com ©2010 | Platform: WordPress | Theme: Motion
kevincao.com