我正在与应用程序上的其他开发人员合作。他的部分基本上是一个控制面板,作为独立模块开发,必须集成在我的主应用程序中。
我的应用程序必须重新绘制bitmapData中的所有面板和元素以执行一些bitmapData.hitTest控件(我们正在处理多点触控表,面板是可拖动的,但必须避免重叠)。
直到昨天我才使用占位符,这意味着我基本上绘制了他正在处理的模块的确切维度的简单形状。今天我们第一次尝试将所有这些合并在一起并且性能非常不同。看起来重绘他的模块而不是我的占位符形状的过程导致了大的性能下降。
这是正常的吗?我认为在性能方面在bitmapData中绘制显示对象的过程与剪辑的尺寸有关,而与内容无关。
编辑:我已经用一种解决方法修复它(基本上是绘制类似于面板对象的边界框的东西),但我仍然对此感到好奇:)答案 0 :(得分:0)
性能部分取决于显示对象的内容。根据被抽取儿童的数量和复杂程度,这可能会有很大差异。举例来说,你可以绘制10,000个(任意大数)的1px乘以1px(任意小数字)的精灵,它们全部堆叠在一起。每个精灵都可以在其绘图代码中包含大量任意矢量命令(moveTo,lineTo等)来绘制,甚至在可见区域之外,无论绘图区域何时被调用,这些绘图命令都将被执行(除非特定代码阻止它们被特殊约束调用。我不相信你应该看到将显示对象绘制到BitmapData对象与将它们绘制到屏幕上的显着差异(我可以想到的唯一区别是写入RAM /堆空间而使用GPU加速它可能在内部改为使用视频RAM。
我相信hitTest本身不会受到孩子数量的影响,因为那时你只是看A中的像素和B中的像素,所以它应该如你所说,仅取决于像素的面积A和B.
出于好奇,你使用什么样的触摸表面以及它正在使用的平台是什么(Android?)。我想象有一个像Tegra 2或3(或其他一些多核和/或GPU加速芯片组)这样的好处理器,这不会产生如此明显的性能影响(尽管我可能是错的) )。我一直在做一个自上而下的射击游戏,并且最近使用我使用边界框编写的简化命中测试方法切换到使用BitmapData的命中测试方法,在本地测试它似乎不会对性能产生负面影响,但是我没有用电缆在设备上进行测试,所以我不确定它是否会在设备上运行时对性能产生影响。