AS3 - 如何计算绘图和位图之间的交集

时间:2016-12-10 08:47:42

标签: actionscript-3 flash bitmap jquery-animate

我正在尝试使用Adobe Animate上的AS3创建手写游戏。到目前为止,我已经创建了我的电路板,功能(绘图,擦除,保存,打印和彩色面板)。但我需要显示一个分数。要做到这一点,我想如果我可以计算绘图和位图图像之间的交叉的百分比(这是我现在的背景)。

有什么办法吗?或者你至少可以告诉我应该尝试哪种功能?非常感谢。

注意:这是我游戏中的2张图片。你可以很容易地理解我想要解释和做什么。

players will try to draw correctly(drawn board)

Empty Board

1 个答案:

答案 0 :(得分:1)

只是一个建议, 假设您正在记录绘图数据,根据记录鼠标位置在阵列内的帧速率的一组点 我在我自己的例子中使用了8个点,结果如下:(8个中的6个= 75%通过)

enter image description here
►黑线是正确的路径(跟踪btimap)►红色是客户端绘制

我们需要搜索整个点数组并对其进行验证,因此百分比将很容易获得

如何验证

每个点都包含x和y,以检查它是否放在黑色像素(位图跟踪)上我们只做

if (bitmapData.getPixel(point.x, point.y) == 0x0) // 0x0 is black
  

getPixel 返回一个整数,表示来自a的RGB像素值   特定点(x,y)处的BitmapData对象。 getPixel()方法   返回未经过相乘的像素值。没有返回alpha信息。

改良效果

当绘制过程中捕获的点数更多时,这种做法会更准确,Trace-Bitmap也必须像这样(上图),而不是虚线(平滑,样式,......)线,但是你可以在背景中使用这个跟踪位图(不可见),并且只向玩家提供带有彩色背景(如草和岩石纹理或任何图形改进)的虚线副本。

注意

如果您需要更高的速度来验证绘图,

还可以定义最大搜索大小。这个最大值将用于忽略某些点,例如,如果max = 5且我们有10个点,则可以忽略0,2,4,6,8