【问题标题】:Can i manage single lines inside of a Sprite?我可以在 Sprite 中管理单行吗?
【发布时间】:2013-03-13 01:07:34
【问题描述】:

我正在开发一款绘图应用程序,但现在出现了一个问题。 有几千条线,必须画,但我也需要以某种方式一一清除。或者也许 - 清除 Sprite 图形内的方形区域。 现在我考虑使用数组并将每一行推入新的精灵,所以我可以将这个新的精灵添加到父级。但是这个解决方案看起来很糟糕,因为将为每一行创建新的精灵对象。 有什么方法可以在不为它们创建精灵的情况下管理线条吗?

【问题讨论】:

  • 现在我要警告您,许多行将对您的应用程序的性能产生很大的负面影响。

标签: actionscript-3


【解决方案1】:

创建一个代表每一行的数据对象。然后创建一个 BitmapData 对象,您可以在其中绘制所有线条(例如,您可以使用 fillRect() 为每条线条绘制一个非常窄的矩形)。在需要更改表示之前清除矩形(使用 fillRect() 或 floodFill()),然后只绘制仍然适用的线条。

使用该 BitmapData 创建一个位图,并将其添加到舞台。

请注意,您应该能够轻松地以良好的性能表示数千行。如果您发现自己创建和销毁代表每一行的数据对象,请查看object pooling

【讨论】:

  • fillRect() 仅适用于正交对齐的线,普通线使用draw()。否则,这是一个好方法。
  • 为什么 fillRect()moveTo()lineTo() 方法用于 Graphics 对象?
  • @Vesper fillRect() 仅作为示例给出。对于对角线,我会在它自己的 BitmapData 上创建一条线并使用 copyPixels(),它比 draw() 更快。对于 copyPixels() 和 draw(),你必须有一个源对象,但对于 fillRect(),你没有。
  • @Gio--因为它表现不佳。
  • 这个实现正是我以前的。我不能只清除位图数据并重新绘制所有数千条线。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-03
  • 1970-01-01
  • 2015-08-28
  • 1970-01-01
相关资源
最近更新 更多