在Flash中,您可以将Flash IDE中绘制的MovieClip嵌入到SWF中,然后使用其类路径创建此实例,例如car = new Car()
。在代码执行时间或渲染时间方面,这样的嵌入式资产是否比使用Drawing API(即moveTo
,lineTo
)慢?
我在互联网上到处搜索,但没有发现任何关于这个问题的详细说明。除了显示“使用绘图API以更快地执行代码”的one SO post之外。
当然渲染成位图并在以后重复使用它会是最快的,但在某些时候你需要将矢量图形渲染成位图并使用上述任何一种方法来实现。
你知道哪个更快,为什么?
答案 0 :(得分:1)
无论来源如何,必须绘制任何矢量资产,并在舞台失效信号呈现显示列表时重新绘制。
我不相信通过Flash Pro的画板创作工具可以转化为显着的优化。比看起来更复杂,诸如时间线层元素组,阴影,渐变和诸如圆角矩形的基元之类的因素可以被不同地处理。同样,使用铅笔工具创建的线条比画笔笔划需要更少的内存。
与Flash Catalyst一样,我相信Flash Pro会单独渲染每个向量,因此复杂对象可能会大大降低已发布应用程序的性能。符号应该用于出现不止一次的元素,元素应该被分组,时间线层应该将元素与不符合的元素分开。
Flash Player 10 and AIR 1.5 provided a new drawing API,通过减少代码执行量来提高性能。这些功能包括:
如上所述,cacheAsBitmap
可以提高翻译效果;但是,在缩放或旋转时会重新绘制。
栅格位图资产几乎总能产生最高性能。用于动画的blitting / bit blit和bitmap sprite sheet等技术将胜过矢量绘图。
在我的应用程序中,我经常实现的一种技术是矢量资产的非阶段渲染,如StackOverflow帖子所示:AS3 Blitting - Copy Pixels getting some of the souce image。
使用此方法可以缩放矢量资产;但是,只有位图才会添加到显示列表中。
不是特定于图形渲染性能,应该注意使用Shape
或Sprite
会比动态MovieClip
类产生轻微的性能提升。