您的位置:首页 > 其它

高效使用Flash的技巧

2012-02-14 09:49 162 查看


改善性能

本节包含一些能够使得在Adobe Flash Player 中播放内容更加平顺以及使用更少资源的有用建议。


利用mouseChildren和mouseEnabled去激活未使用对象的交互性

如果你确信你的Flash项目中的对象将永远不是互动的(并且将不包含任何交互式对象),你可以将下面的代码添加到对象容器的第一帧中:
mouseEnabled = false; mouseChildren = false;


上面的代码将去激活容器以及位于其中的所有嵌套容器。 为了保存容器的激活和交互状态,使用
mouseChildren = false;
即可。 减少项目的激活容器数量能够帮助提升性能,因为相应的影片剪辑将使用较少的资源(参见图1)。



图1. 使用ActionScript 从 Stage的项目中删除互动性

评估位图或矢量是否是每个图形组件的最佳选择
如果你的项目的图形包含大量的梯度(gradients)、细节(details)和颜色信息,则在测试之后,你可以发现位图图像是在Stage中显示这些图像的最佳选择。
当你使用位图图像时,它们是与分辨率相关的并且在放大时图像效果较差,但你可能不需要对图形进行放大。 如果他们确实需要缩放,尝试使用根踪的矢量形状,看看他们是否能够显示足够的细节。 当使用矢量形状和位图图像时,你应该始终检测和比较项目的性能以便在每种情形下发现最佳的选项(参见图2)。



图2. 尝试使用矢量和位图图形以便比较一下谁的效果最好


使用Convert Lines to Fills选项将outline转换为fill

选中Modify > Shape > Convert Lines to Fills 将形状轮廓线和矢量线转换为矢量填充。 线需要更多资源因为它们具有两条边—而填充仅有一条边(参见图3)。



图3. 使用 Convert Lines to Fills 选项改善性能

谨慎使用非实线式样
除非必要,否则避免使用虚线或点线。绘制实线需要较少的资源(参见图4)。



图 4. 尽可能使用实线和笔画
使用直线而不使用曲线
当编辑矢量图形时,使用斜角连接而不使用圆角连接。 斜角连接使用的是直线,与显示曲线相比,需要较少的资源。 此外,当你显示小型矢量形状时,你也应该使用斜角连接,因为圆角连接不太引入注目而且浪费不必要的资源(参见图5)。



图 5. 使用方斜角连接而不使用圆角连接

优化矢量形状
复杂矢量复杂矢量形状通常在直线之间和曲线之间包含许多控制点。 通过删除一些不必要的点,你能够节省资源而不影响图形的外观。
选中Modify > Shape > Optimize(或使用Smooth 工具)以便优化矢量图形。 你应该在矢量复杂性(形状质量)和减少线数之间寻找平衡点(参见图6)。



图6. 在矢量工艺图中减少不必要的点以节省资源

避免使用矢量梯度填充
与纯色填充物相比,利用梯度 填充物填充的形状需要更多的资源。 如果可能,尽量使用纯色填充物替代梯度填充物。 尽管你只获得少量的性能提升,但这在为移动设备开发项目时非常有用(参见图7)。



图7. 利用纯色填充物填充矢量形状

利用Alpha透明方式最大限度地降低图形的使用
Alpha channel 透明的确影响性能,特别是在应用于动画对象的情形下。 仔细核查PNG 位图图像以便确认当你导入它们时,它们没有未使用的
alpha透明设置。 除非必要,否则也不要在 symbol实例上设置alpha属性—避免在项目中创建淡入淡出动画效果(参见图8)。



图8. 除非必要,否则删除alpha 透明设置

只在必要时使用面具(mask)
确定你在什么情形下必须使用面具,并且尽量谨慎地使用它们。 如果可能,使用图像编辑程序,如Adobe Illustrator或Adobe Fireworks编辑图像和矢量图形,而不是使用面具编辑图像。
面具需要额外资源并且图像的隐匿部分将不必要地增加文件的大小。 在某些情形下,你可以使用代码函数替代矩形面具。 具有
scrollRect
属性的编程代码使用较少的资源,但它不一定适用于所有场合;它取决于你试图实现的目标。 寻找一些策略方法以避免在你的项目中使用面具并且探索一些能够导致类似外观的新的选项(参见图9)



图9. 如果你能够通过模型或位图获得类似效果,则避免使用面具

尽量在图形元素中减少混和模式的使用
当你应用混合模式时,它将会降低项目的性能。 使用图像编辑程序制作图像和图形以尽可能避免使用混合模式(参见图10 )。



图10. 在将图像导入Flash之前利用混合效果制作图像

在Flash中最大程度地少用过滤器(filter)
尽量避免使用过滤器,除非必须使用它获得特定的效果。 利用图像编辑程序制作带有阴影的图像,而不在Flash中对图像应用阴影过滤器(shadow
filter)。 在一些情形下,过滤器将影响项目的性能(参见图11)。



图11. 在导入图像之前,添加过滤器效果,例如投影效果(dropshadow)

使用可以获得可接受外观的最低质量的过滤器设置
如果你的项目不需要较高设置,则不要使用 High和 Medium质量设置。 检测一下Low Quality设置,看一看它是否能足够满足你的要求。 如果你使用较高的质量设置,则你将增加资源消耗(参见图12)。



图12. 如果在你的项目中Low Quality设置是可以接受的,则使用Low Quality设置

如果缩小位图图像,则使用偶数调整位图图像的大小
当利用图像编辑程序缩放和编辑图像以便将它们导入到Flash中进行缩小时,你可以使用偶数值将它们编辑为正方尺寸。 关于相关的更多信息,参见Flash Platform 在线文档的Direct
mipmapping中的相应章节。
你也可以使用mipmapping来计算你将要创建的位图的最佳尺寸。 Mipmapping不适用于缓存的位图图像(或带有应用过滤器的位图)。 如果你不准备缩小一个位图图像,则在将它导入到Flash之前使用图像编辑程序将位图图形调整到实际所需的尺寸。
下面是一些样本尺寸:

1024 x 1024 pixels

512 x 512 pixels

256 x 256 pixels


使用较低的帧速率

使用不同的 帧速率 测试你的项目以便找到最低可接受的速率。 许多动画能够以24–30 fps平顺地播放。 应用程序的用户界面(不带动画效果)通常能够以12
fps 播放,而不会显著影响外观效果。 如果你的项目中播放一些间歇性的动画并且你希望它们能够顺利播放,则你可以使用ActionScript代码在运行时改变帧速率。 当一个项目设置为使用较高的速率时,则Flash Player只能拥有较少的时间在 Stage 上绘制元素以及处理相应的代码。 依据不同的项目情况,较高帧速率将导致性能的降低。 你必须对项目进行测试以便查看一下什么帧速率最适合你的内容(参见图13)。



图13. 在Property inspector中调整帧速率

避免影片剪辑嵌套
尽可能使用层替代影片剪辑容器来组织组件。 在项目中减少嵌套容器的数量可以提升它的性能(参见图14)。



图14. 利用Timeline的层架构而不使用影片剪辑嵌套的方式组织组件

避免通过使用过滤器制作动画对象
当你对对象应用过滤器时,它们将自动采用
cacheAsBitmap
行为。
为过滤器提供动画效果、以及为过滤器属性、变换操作和颜色提供补间动画效果均迫使Flash Player在每帧上重新缓存对象并且重新应用其过滤器--这将导致资源的极度消耗(参见图15)



图15. 为过滤器、变换操作和颜色提供动画效果需要更多资源

注意:你可以为对象的x 和y 属性提供动画效果而无需对它们重新缓存。


当设置Blur X和 Blur Y filter属性时使用2的乘方值

当在Property inspector中设置Blur X和 Blur Y filter属性时计算2的乘方值(21, 22, 23等等)。 输入值 2、4、8或16 能够提升应用过滤器的速度高达百分之 20–30(参见图16)。



图16. 当设置 Blur X和 Blur Y 属性时输入2的乘方值

从策略上缓存复杂矢量图形和文本
针对那些不包含嵌套动画的复杂矢量图形使用“Cache as Bitmap”功能 你也可以将它应用于静态文本字段。 针对那些不含动画效果的对象(或只使用x和 y 属性提供动画效果的对象)使用“Cache as Bitmap”功能。
如果你使用ActionScript,则你也可以使用
cacheAsBitmapMatrix
,但只有Adobe AIR 支持它(从AIR 2开始提供)。 这使得你能够缩放和旋转缓存的对象而无需重新缓存它们,这样GPU(安装于用户计算机的图形卡)能够合成和缩放这些变换图形。
此外,你可以使用在Flash Professional CS5.5中引入的Export as Bitmap功能,以便在编译SWF 文件时将复杂的矢量对象或嵌套对象转换为位图图形。 记住你无法对应用于导出的位图图像的平滑或压缩设置进行控制。 你只能针对没有包含嵌套动画的对象使用"Export as Bitmap"功能。 这一模式相对于传统的"Cache as Bitmap"功能具有一些附加的优势。
例如,导出的图像可以根据需要提供旋转、缩放和动画效果,而不会招致在处理缓存对象时发生的相同显著的性能影响。 然而,添加到SWF文件的导出位图图像的确增加了文件大小。
如果缓存或导出的位图对象具有不透明、连续色调背景填充,则你应该使用Opaque Bitmap背景选项并且选中一种颜色填充相应的背景,这样性能可以获得更多提升。
如果缓存的容器在包含的对象之间包括大量未使用的空间,则必须确保分别地缓存每个对象以便在内存中保存额外的字节。 尝试使用不同策略并且比较相应的结果以便确定最佳使用方法(参见图17)。



图17. 在Property inspector中选中相应的Display设置

当创建非常简单的动画时避免使用补间动画
你可以使用编程方法实现简单的动画效果,例如运动、旋转、颜色变更、alpha透明淡入淡出、等等。 探索如何使用第三方库,例如由GreenSock开发的 TweenLite
这样,生成的动画效果能够节省更多资源并且能够更易于灵活更新(参见图18)。



图18. 利用ActionScript控制的动画替代补间动画

在CPU模式下避免使用2.5D
当你使用用户的计算机处理器(CPU)而不是图形卡(GPU)变换3D对象时, 该项目将会遇到与使用“Cached as Bitmap”功能的对象遇到的相同性能问题(参见图19)。



图19. 对3D对象进行转换需要更多处理资源

使用重绘区域
你可以在 Debug Flash Player的context菜单中使用该选项显示重绘区域,以便查看在 Stage中究竟绘制了哪些条目(以及何时它们将显示出来)。 这一策略非常有用,因为你能够发现剩余的不可见动画占用了不必要的资源(参见图20)。



图20. 使用Show Redraw Regions选项查看重绘元素的轮廓

尽量将重绘区域保持在最小状态
如果可能,防止重绘区域叠加。 叠加对象的重绘区域能够合成一个更大区域,这将导致更多未用空间能够用于重绘。 注意,在较小的区域中绘画的速度更快(参见图21)。



图21. 叠加元素将增加重绘区域的大小

必须停止隐匿影片剪辑中的动画运行
如果一个影片剪辑包含按需播放的动画(而不像SWF加载的形式),则需要加倍核查在影片剪辑处于隐匿状态时,该动画不能播放。 当容器处于隐匿状态(或当你删除影片剪辑时),一定要停止动画播放以避免消耗额外的资源(参见图22)。



图22. 添加一个 stop操作以便确保隐匿的动画不会继续播放

避免将对象放置于Stage可见区域之外的位置
尽量不要将对象放置于Stage区域之外的位置。 如果你改变了Stage的大小并且忘记移除相应的图形,则这些在背景中看不见的图形将继续在SWF文件播放的同时消耗资源。 此外,还应该避免将对象放置于Stage之外的位置,以便于以后将它们带回到Stage上。 最好使用ActionScript 代码先将对象的visible属性设置为false ,然后再将其设置为 true—或利用
addChild()
方法添加该对象—在你希望显示该对象的时刻。
放置于Stage之外的对象尽管在播放时看不见,但它们仍然消耗资源(参见图23 )。



图23. 避免将对象放置于 Stage区域之外的位置

避免使用TLF文本字段除非你需要特定文本功能
使用Classic text 字段而不是TLF
text 字段,除非你的项目特别需要TLF文本功能。 与Classic文本字段相比,TLF文本的渲染速度较慢并且将更多字节添加到SWF文件中。
如果你希望添加没有包含于Classic 文本字段的文本功能,尽量使用第三方的 TLF 功能相同的应用程序,例如 TinyTLF。 默认情形下,导入的文本字段设置为TLF文本字段。
如果你不使用TLF文本,记住在导入它们之后在Property inspector中将它们设置为Classic文本字段。


为每个项目选中合适的Preview Mode

改变文档渲染质量以便加快其显示速度。 通过选中 View > Preview Mode你可以为你的项目选中最合适的模式(参见图24)。



图24. 针对你的项目试验使用不同的预览模式

优化项目组件的文件大小
遵循下列建议以便减小你创建的SWF文件的大小以及改善它们的下载时间。


设置位图图像的合理压缩比

在Library中使用Bitmap Properties 对话框小心地细调每个图像的压缩类型和质量,特别是在你导入利用Adobe Photoshop创建的图像的情形下。 该方法能够降低所需的资源量并且减少SWF文件的大小。 如果图形包含大量的细节(details)、梯度(gradient)和颜色信息,则使用JPEG 压缩模式;针对复杂度较低的图像,使用PNG 压缩模式以便生成的SWF 文件的尺寸较小。
尽可能避免应用Allow Smoothing选项,因为平滑操作需要额外资源。 尽量在图像质量和文件大小之间找到一个平衡点。 单击Test按钮查看在选中的压缩设置下图像的大小和质量(参见图25);图像质量列于对话框的左侧,而文件大小列于对话框的底部。



图25. 单击Test 按钮查看质量和压缩设置

考虑何时利用位图图像填充模型
你可以对一幅图像进行拆分(Modify > Break Apart)或使用 Color面板将一个模型的 Color 类型设置为 Bitmap fill。 如果你只使用位图图像的一部分来填充一个模型,记住在发布时,整个位图图像将被编译到SWF文件中。
即使你仅仅使用大型文件的一个很小部分,但整个图像大小将被添加到相应的SWF文件中。 最好使用图像编辑程序准备和导入作为独立位图图像的较小图像部分,然后按照原样使用这些较小的位图文件,而不是采用填充模型的方式。
正如前面多次提及,如果你在多容器的情形下使用整个位图图像(或其中绝大部分),那么我认为位图填充是一种很好的策略。 在下面的情形下,你可以使用bitmap fill功能以便于减小SWF文件的大小,因为当发布时,只有一个位图图像将被编译到相应的SWF文件中(参见图26)。



图26. 确定在什么时候使用模型的位图填充最有效率

避免缩放位图图像
如果可能,使用图像编辑程序准备图像以避免在Flash中对它们进行缩放。 将图像放大需要额外的资源。 如果你通过缩小图像减小导入图像的尺寸,那么你将把一些未用的字节添加到SWF文件的文件大小中。
然而,在某些情形下,你通过在Timeline中对位图图像提供动画效果能够将它们缩小。 在这种情形下,最好在进行缩放之前,以图像的最大尺寸将其导入(参见图27)。



图27. 利用图像编辑程序调整图像,然后导入它们

利用跟踪的矢量模型替换简单的位图图形
使用跟踪的矢量图形替换具有较少颜色、梯度或细节信息的图像。 当你显示简单图形时,矢量图形需要较少的资源,因此相应的SWF
文件尺寸较小。 如果源文件图像是一个位图图像,则你可以利用Illustrator将位图图像转换为矢量图形。 你也可以在Flash中选中Modify > Bitmap > Trace Bitmap。 当利用矢量图形替换位图图像以便获得最有效的结果时,必须进行性能比较测试(参见图28)。



图28. 在 Flash中使用Trace Bitmap功能创建矢量图形

利用补间动画替换逐帧动画
如果可能,使用 补间 使用补间动画替换逐帧动画。 除了节省时间之外,相应的SWF文件可以使用较少的资源,并且生成的SWF 文件尺寸较小(参见图29)。



图 29. 使用补间动画替换逐帧动画

核查文件大小报告以便在具有较大的文件尺寸的项目中识别组件
在Publish Settings对话框中,启用Generate Size Report选项以便了解Flash文件的某些元素的尺寸是否超过期望值。 找出尺寸较大的文件并且尝试优化它们或利用尺寸较小的文件替换它们。


尽可能使用符号

如果可能,将图形对象转换为符号。 如果图形组件在项目中的使用次数超过一次,则必须将图形元素转换为符号。 你可以针对符号实例调节和应用颜色效果,以便创建原图形文件的若干变体。
这一策略能够减小发布的SWF文件的文件尺寸。


只在文本字段中嵌入你需要显示的字体字符

当处理动态、输入或 TLF 文本字段时,不要嵌入一种字体的整个字符集。 而是只嵌入那些在Flash项目中使用的字符。 这一策略能够避免将额外的字节添加到相应的SWF文件中。 如需嵌入字体,选中Text > Font Embedding,并且确保利用描述性名称为嵌入字体命名以便于以后编辑该项目(参见图30)。



图30. 使用Font Embedding对话框只选中需要在项目中显示文本的字符

禁用在Publish Settings对话框中包含XMP元数据的选项
在Publish Settings 对话框中,如果项目不使用XMP元数据,则禁用Include XMP Metadata 选项。 这一操作将会从发布的SWF文件中删除一些字节(参见图13)。



图31. 取消选中Include XMP Metadata选项

开发更优雅的Flash项目
本节给出的建议能够改善你的内容性能。 这些方法能够便于你更新文件、帮助你组织文件并且有利于其他开发人员更方便地共享你的项目文件。


避免将尺寸设置为一个像素的二十分之一l (twip)

尽量将每个四舍五入对象的x和 y 尺寸设置为完全的整数值。 这一方法帮助避免产生各种混淆问题并且还可以节省资源(参见图32)。



图32. 输入对象属性的完全整数值

考虑是否使用Convert to Bitmap功能
Convert to Bitmap功能(参见图33)支持你将矢量元素和嵌套对象快速地转换为一个单一的 位图支持你将矢量元素和嵌套对象快速地转换为一个单一的位图对象。
在它计算元素的同时,它也会考虑到嵌套效果和面具。 在某些情形下,它将导致在转换过程中出现颜色损失或附加的额外alpha现象。 在完成转换之后,必须查看相应的位图。 如果你发现结果并不是你期望的效果,你也可以考虑采用屏幕截屏或使用外部图像编辑产品来合成元素,然后重新载入编译好的位图文件。 在默认情形下,使用Convert to Bitmap功能的位图图像设置为Allow smoothing和 Use PNG 压缩模式。



图33. 必须核查使用 Convert to Bitmap 选项生成的图像

谨慎使用动画消除锯齿(Anti-alias for Animation)字体渲染选项
如果可能,使用可读性消除锯齿(Anti-alias for Readability)字体渲染方法,除非你需要为文本字段提供动画效果。
使用Anti-alias for Animation 选项将导致字体不如使用 Anti-alias for Readability选项的文本平顺(参见图34)。



图34. 尽可能使用 Anti-alias for Readability选项

除非必需,否则在文本字段禁用Selectable选项
在默认情形下,在文本字段的Selectable 选项处于禁用状态。 如果不需要这一功能,必须禁用这一设置。 只有你认为用户将在文本字段中进行文本复制操作时,才会启用这一设置,例如显示错误消息的文本字段(参见图35)。



图35. 记住禁用Selectable 选项,除非它是绝对必需的

在Timeline中删除未用的补间动画
在发布项目的最终版本之前,查看Timeline以便找出任何没有使用的补间动画。 使用"Remove tween" context菜单删除它们,然后发布 SWF 文件(参见图36)。



图36. 在 Timeline中找到并且删除任何未用的补间动画

以策略的方式隐匿对象
根据项目目标,你可以将一个实例你可以将一个实例的
visible
属性设置为false,以及将该对象的
alpha
属性设置为0。例如,如果你有计划地使得一个对象淡出,则你可以将其
alpha
值设置为0。但在动画播放完成时,必须确保将该对象的
visible
属性也设置为
false

可见的对象仍然处于可点击的状态,并且能够阻止其下面的条目接受用户的鼠标点击。 此外,可见的对象,不论其
alpha
设置如何,均消耗较多的资源
如果只希望隐匿对象而不需要将其淡出,将
visible
属性设置为 false即可。 在这一情形下,没有必要改变对象的
alpha
值。
为了节省更多的资源,应该从DisplayList中删除对象,而不是将它们隐匿起来。 只要隐匿和显示操作不是在每帧中均发生,则可以根据需要有计划地隐匿和显示它们。


避免在Stage的其它对象下隐匿对象

如果你希望隐匿一个对象,则你可以将其
visible
属性设置为 false 或将其从 DisplayList中删除。 隐匿于其它对象下面的对象仍将浪费资源(参见图37



图37. 将对象的可见性设置为false或将其完全删除;不要通过将对象放置于Stage的其它元素下面隐匿它让它不可见

使用自定义UI组件
你能够做的保护资源和减少文件尺寸的每一件事情均可以改善项目的性能—特别是在移动设备上部署应用程序的情形下。 当你希望合并UI元素,例如列表菜单、滑动条或组合框时,尽量使用第三方组件或开发你自己的自定义UI元素
标准的Flash组件可能会消耗太多的资源以便满足某些 Flash应用程序的要求(参见图38)。



图38. 利用ActionScript创建你自己的自定义UI组件

以描述的方式命名元素
在Library中,必须为层、字体和组件输入有意义、描述性的名称。 这是一种最佳的方法,因为它可以帮助你和其它开发人员在以后调试项目时跟踪问题(参见图39)。



图39. 不要使用由 Flash分配的默认名称;输入可以在项目中描述每个层和元素的名称

在名称中只使用字母数字字符、虚线和下划线
不要使用空格、大写字母或特殊字符(甚至标音字母),特别是来自你的母语的字符(如果它使用英语字母表不用的字符)。 这是非常重要的,因为名称中的特殊字符将会引起问题,其中包括当使用外部工具时的版本控制。


针对Timeline中的动画对象使用一致实例名称

如果你在Instance Name 字段中输入一个名称,以便在 Timeline的补间动画中引用一个对象,则必须确保在相同层的整个动画中针对该对象的所有其它实例均使用相同的 实例 名称。
这样做可以避免当你利用 ActionScript代码引用相应的对象时将会发生的一些不同问题(参见图40)。



图40. 确保已经命名的实例在整个层中使用相同的实例名称

在对对象提供动画效果之前将它们转换为影片剪辑
在对对象提供动画效果之前必须将它们转换为符号。 如果你不对符号进行处理,则这些对象将被自动转换为图形符号(它们不能在Property inspector中进行命名,因此当使用ActionScript代码时它们毫无用处)。
如果你在Library面板中看到名称为"Tween1"、"Tween2"等的条目,这意味着Flash已经在不是符号的对象被补间动画时将它们转换为图形符号(参见图41)。



图41. 在将对象变成动画之前必须将它们转换为符号以避免自动生成图形符号

使用每种情形要求的正确文本字段类型
在选中使用的文本字段类型之前应该考虑一下相应的项目要求。 如果文本字段不必由用户进行编辑或通过 ActionScript代码进行动态填充(或访问),则选中Static Text选项。 如果文本字段的内容需要利用ActionScript进行控制,则使用Dynamic Text选项。 如果文本字段必须由用户和ActionScript代码进行编辑,则选中Input Text选项(参见图42)。



图42. 选择与你的项目要求一致的文本字段类型

在创建和发布文件时选中正确的ActionScript类型
如果你的项目包含ActionScript 3 代码,则在你创建新文件或更新 Publish Settings时选中ActionScript
3选项。 如果你选择一个不同的选项(例如 ActionScript 2),但该项目包含 ActionScript 3 代码,则它不能正常工作并且你不能立即确认它出现问题的原因。



图43. 在创建和发布文件时选中正确的ActionScript类型

使用每个项目最合适的发布选项
如果项目使用外部库,考虑使用一个 SWC文件 而不是使用一组AS文件。 有些Flash 开发人员选择将他们的项目以 SWC和一组AS 文件的方式发布。
你可以配置相应的 Publish Cache 设置(在 Flash Professional CS5.5中引入的功能)以便指定你的硬件。 如需访问 Publish Cache设置,选中 Edit > Preferences > Publish Cache。
如果你的项目包含大量代码并且编译时间很长,则你应该在Publish Settings中禁用 Warnings Mode选项。 选中 Flash标签,然后在选中ActionScript 3的同时,单击Advanced ActionScript 3.0 Settings,之后取消选中Warnings Mode复选框。 这一选项能够使得发布过程的速度更快。 然而,记住当你禁用告警消息时,在调试项目时你将看不到代码提示信息(参见图44)。



图44. 在Publish Settings对话框中禁用Warnings Mode选项

让项目文件更易于更新
当你利用Flash Professional开发应用程序时,考虑一下如何应用下面这些最佳方法。 你可以组织项目并且创建元素以确保你和其它团队成员以后能够对它们进行快速地更新。


将ActionScript和帧标签放置于Timeline的前面两层

不要在包含项目组件的层中编写你的代码。 如果你这样做,则当以后编辑该Flash文件时,其他开发人员(以及你自己)将看不到它。 将所有代码放置于其自己单独的层中,并且将所有帧标签放置于它们自己的层中。 两个层应该位于Timeline的层堆栈的顶部,并且是锁定的,以避免偶然地将组件添加到包含ActionScript代码或帧标签的层中(参见图 45)。



图45. 在前面的两个层中隔离ActionScript 代码和帧标签
使用帧标签替代脚本中的硬编码帧号码
使用具有含义的名称的标签而不是引用帧号码。 这一策略能够帮助避免在动画的程度发生变化时出现的问题。 它还能够使得以后编辑 Flash 项目变得更为方便,并且能够帮助其他开发人员了解项目是如何建立的(参见图46)。



图46. 使用描述项目的帧标签,而不是通过Timeline中的帧号码引用相关帧


避免使用文本元素的位图图像

与在文本字段中编辑文本相比,在位图文件中编辑文本更加困难。 当你导入文本时,不要选中Flattened Bitmap Image 选项;而应该选中Editable Text 选项(参见图47)。



图47. 使用文本字段替代位图图像,以便用于文本元

从Timeline中删除不必要的关键帧
跟踪未使用的 keyframes 并且将它们从Timeline中删除。 如果你先前插入了keyframes,但它们不再用于进行任何变更,你应该删除它们。
除了浪费资源之外,空的keyframes在以后编辑项目时将会添乱(参见图48)。



图48. 在层中删除不必要的keyframes

让Timeline中的所有层具有相同的长度
按下F5,插入附加的帧以减小层的长度并且使得它们与最长层的长度相同。 这是一种最佳的方法并且它能够让Timeline更易于读取(参见图49)。



图49. 扩展所有层以便它们能够与Timeline中的最长层的长度匹配

删除空的未使用的层
删除那些不包含任何组件、ActionScript 代码、帧标签、音频元素或其它项目元素的。 空层将会导致混乱并且使得在编辑Timeline时产生不必要的困难(参见图50)



图50. 如果层不是必需的,则从Timeline中删除它们

避免使用多场景
与其使用在Scenes面板中创建的许多场景,不如考虑使用影片剪辑或跳转到主Timeline中的帧。 当你使用多场景时,编辑Flash文件将会产生混乱状况,特别是在你与其它开发人员共享项目文件的情形下。 此外,多场景通常会导致发布的SWF文件的大小增加(参见图51)。



图51. 使用帧标签和 ActionScript 跳转到 Timeline中的section

以一致的方式并且只在需要的时候对组(group)进行命名和使用
Group使得同时处理多个对象变得简单方便。 在实现多个任务时分组非常有用,例如在Stage上将一组对象排成一列。 你可以在不影响项目的性能时对对象进行分组,因为在发布SWF文件时将忽略这些group。
然而,如果你和一个开发团队一起开发一个项目,最好的方法是避免对对象进行不必要的分组。 将影片剪辑用作一组相关对象的容器是一种更为合适的方式,因为团队成员能够更方便地访问影片剪辑中的元素。 而分组的对象编辑起来更加困难(参见图52)。



图52. 如果你需要将对象进行分组以便将它们排成一列,则在Stage上将对象排成一列之后需要再次对它们取消分组

定期地核查Timeline以确保补间动画保持完整状态。
如果一个补间 动画在Timeline中看起来不同(例如,原来实线现在在两帧之间显示为虚线),则这意味着补间动画是不完整的。 通常出现这样情形的原因是用于创建动画的对象没有在Stage上出现并且在其中一个关键帧中丢失。
在这种情形下,删除该动画并且重新创建它(创建图53)。



图53. 如果你在补间动画之间看到虚线,这意味着补间动画是不完整的

从Library面板中删除未使用的条目
为FLA文件制作一个备份副本,然后删除所有未使用的条目(现在未使用并且未来也不会使用的元素)以便更好地组织Library面板并且使得组件的列表更易于读取。 本方法也能够确保FLA项目的文件尺寸变得更小。
在 Library面板中,Use Count功能可以帮助识别未使用的元素。 此外,你也可以选中 Select Unused Items,但在选中该菜单时必须小心,因为在偶然的情形下,它包含一些用于项目的文件(参见图54)。



图54. 查看Use Count栏以识别在项目中没有使用的元素

在Library中创建文件夹以便于组织相关的组件文件
你可以使用文件夹管理 Library面板的内容,并且使它保持完好的结构。 使用文件夹组织组件的项目更易于快速更新(参见图55)。



图55. 在Library面板中创建文件夹以便于组织项目组件

更新文本字段属性以便于匹配项目的设计
在默认情形下,文本字段的设置是使用2倍行距和多线模式。 如果你的项目只要求行距为0的单线文本字段,那么你需要在Property inspector中更新这些选项以便与你项目中的文本字段设置匹配(参见图56)。



图56. 使用Property inspector设置来更新选中的文本字段

不要将文本字段打散
在你将文本字段打散之后,将无法对它们进行编辑。 如果你希望使用break apart 功能对文本字段中的字符提供动画效果,则可以考虑使用ActionScript 来实现相同的效果。 如果你有计划地为文本字符产生动画效果,则文本字段仍然可以保持可编辑状态并且在需要时更易于变更。



图57. 避免将文本字段打散,因为这样它们将无法编辑

在导入过程中保持文本字段的可编辑性
当你导入文本字段时,必须选中相应的选项以便将它们以Editable text导入(参见图58)



图58. 在Import对话框中,选中Editable text 选项

调整文本字段元素的大小以便与它们内容的大小匹配
避免让静态文本字段大于在它们之中的文本内容 除非你有特定的原因—例如使用文本字段显示按钮标签—否则,使用居中文本对齐方式是最好的方法。 如果文本使用居中对齐方式并且文本字段的尺寸与其中的文本内容匹配,则以后编辑文本内容将更加简便。
为了设置文本字段的尺寸以便与文本内容匹配,你在编辑文本时必须单击文本字段的右上角的白色方块图标。 如果显示的图标是一个圆圈而不是一个方块,则表明文本字段的尺寸与它包含的文本内容已经匹配(参见图59)。



图59. 调整文本字段的大小以便与文本内容匹配并且将文本的对齐方式设置为居中对齐(align center)

绝不将ActionScript 2 代码附着于按钮和影片剪辑
如果你希望开发使用ActionScript 2 代码的项目,则避免将该代码插入到对象中。 必须以帧脚本的方式添加代码,因为这样做以后比较易于查找(参见图60)。 你可以识别包含代码的帧,因为它们可以在Timeline中显示小写字符。



图60. 将ActionScript 2代码添加到帧脚本中
注:当你开发使用 ActionScript 3的项目时,你只需将代码添加到帧中即可。


组织项目组件以便让字体文件易于访问

一定要将字体文件保存于项目的文件夹中。 当你相应共享项目文件时,必须确保包含所有必要的文件,其中包括用于项目的字体文件。


在你共享文件时必须包含所有项目库和第三方类

别忘记添加所有用于项目的外部库和类文件。 加倍核查你是否使用全局路径进行外部文件的链接。


将ActionScript 代码添加到项目文件的一个中央位置

当将ActionScript 代码添加到帧中时,尽可能将所有重要脚本(需要用于Stage resize处理和Stage建立等操作)放置于易于访问的位置。 这一策略使得以后更新项目更为简便。 一般来说,最好将重要的代码放置于Actions层的Frame 1中,这样在未来使用该项目的任何开发人员均可以快速地找到它。
你可以将不太重要的、独立的或补充的代码放置于由Frame 1的主脚本控制的其它位置。


使用至外部文件的相对路径

使用至类、库和输出文件的相对路径。 这使得你的项目能够移植并且方便与其它开发人员共享。 如果你始终遵循这一规则,那么其它团队成员以后不必变更相应的路径(参见图61)。



图61. 当链接外部文件时使用相对路径
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: