我有一个应用程序,用户必须在画布上绘制一条线而不重叠。有没有办法测试重叠?我已经使用Google搜索,但发现了圆圈和矩形重叠的结果。我的情况不同。这里用户将在画布上绘制线条而不重叠线条本身。可能是我错过了一些东西,所以任何指导表示赞赏。谢谢Flash绘制线重叠检查
0
A
回答
2
我认为你的意思是用户用某种笔工具画一条线,用鼠标。
这里是我会做:
首先,持有BitmapData对象绘制的线条的路径。
var lineBitmapData:BitmapData = new BitmapData(display.width,display.height,true,0x00000000);
这会创建一个透明的位图对象,并在其上包含用户的行。
在每个帧(或定时器事件,如果使用定时器)执行以下操作:
1.capture当前鼠标位置,并把它变成一个Point对象。
var currentMousePosition:Point = new Point(mouse.x,mouse.y);
你还需要一个点来代表你的bitmapData的左上角。当前鼠标位置和lineBitmapData
var result:Boolean = lineBitmapData.hitTest(pt1, 0xFF, currentMousePosition);
在则hitTest方法的第二个参数之间
var pt1:Point = new Point(1,1);
2.perform碰撞检测是门限值。基本上,这需要设置为您希望算作命中的最小alpha值。
3.检查hitTest的结果。如果它是假的,这意味着用户将要绘制这个框架的内容不会与已经绘制的内容相交。在这种情况下,将最后一帧期间绘制的位添加到lineBitmapData。
但是,如果hitTest返回true,那意味着用户即将使他的线相交,因此您的程序需要停止绘图(或任何您想要的行为)。
if(result){
myPenTool.stopDrawing();}else{
var drawnLastFrame:BitmapData = myPenTool.drawSingleFrameLine();
lineBitmapData.draw(drawnLastFrame);}
4.Update用户看到新lineBitmapData
相关问题
- 1. 两条线之间的重叠检查
- 2. 重叠绘制重叠的半透明线条而没有变暗
- 3. 根据密度绘制颜色重叠线
- 4. 在matplotlib中绘制重叠线的建议?
- 5. 如何绘制曲线可能重叠的地方?
- 6. 线条不被绘制在重叠视图上
- 7. 检查范围重叠
- 8. 检查重叠日期(vb.net)
- 9. PHP时间重叠检查
- 10. 检查矩形重叠
- 11. 检查重叠系列
- 12. 检查条件(绘制==绘制)
- 13. Flash Bug - 强制屏幕重绘
- 14. 堆叠JPanel重新绘制不正确
- 15. 图像重叠和绘制两次
- 16. 如何绘制重叠立方体
- 17. FLASH AS3声音重叠
- 18. 查找重叠时间的线程
- 19. 查找重叠线段的算法
- 20. GMSURLTileLayer重叠折线
- 21. ChartJS非重叠线
- 22. 检查WPF中的重叠形状
- 23. Javascript for loop检查间隔重叠
- 24. DateTime蜱虫,检查重叠日期C#
- 25. 检查多个重叠的精灵
- 26. 检查两个矩形是否重叠
- 27. 的Javascript检查是否范围重叠
- 28. 检查重叠的汽车保留
- 29. 如何检查时间重叠轨道
- 30. 检查日程是否重叠
在屏幕上。非常感谢您的回复。我尝试过,但效果不佳。它只有在我画得非常缓慢时才起作用,所以它抓住了所有的鼠标位置,但是如果我画得更快,它会绕过所有检查,我认为需要获得路径上的所有点可以解决这个问题,但不知道该怎么做。不管怎样,谢谢你 –