我正在使用多点触控屏幕上的动作脚本3绘制应用程序..代码运行良好,除了一个错误..当我使用两个手指时它不会绘制两个单独的行..但是连接它们
从两根手指触摸一条线而不是两条点
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
writeSubMenu.drawingBoard.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin);
private function onTouchEnd(e:Event):void
{
writeSubMenu.drawingBoard.removeEventListener(TouchEvent.TOUCH_MOVE, onTouchMove);
writeSubMenu.drawingBoard.removeEventListener(TouchEvent.TOUCH_END, onTouchEnd);
writeSubMenu.boardBitmapData.draw(writeSubMenu.drawingBoard);
}
private function onTouchMove(e:Event):void
{
if (writeSubMenu.isEraseron )
{
writeSubMenu.drawingBoard.graphics.lineTo(writeSubMenu.drawingBoard.mouseX, writeSubMenu.drawingBoard.mouseY);
writeSubMenu.drawingBoard.graphics.lineStyle(50, 0xffffff);
}
else
{
writeSubMenu.mouseMoved = true;
writeSubMenu.lineColor = writeSubMenu.paintColor;
writeSubMenu.drawingBoard.graphics.lineTo(writeSubMenu.drawingBoard.mouseX, writeSubMenu.drawingBoard.mouseY);
writeSubMenu.drawingBoard.graphics.lineStyle(13, writeSubMenu.lineColor);
writeSubMenu.isEraseron == false;
}
}
private function onTouchBegin(e:Event):void
{
writeSubMenu.drawingBoard.addEventListener(TouchEvent.TOUCH_MOVE, onTouchMove);
writeSubMenu.drawingBoard.graphics.moveTo(writeSubMenu.drawingBoard.mouseX, writeSubMenu.drawingBoard.mouseY);
writeSubMenu.mouseMoved = false;
writeSubMenu.drawingBoard.addEventListener(TouchEvent.TOUCH_END, onTouchEnd);
}
在as3或外部库中有这种情况的解决方案吗? 注意:我试过涂鸦而且也没有工作
谢谢
答案 0 :(得分:0)
看起来你只有一个绘图画布。因此,当您调用lineTo时,它将只从先前位置绘制线条,无论此先前位置是由一个还是另一个触摸启动。快速的想法(可能不是最好的想法)是有多个矢量来存储触摸的位置点。然后,您可以在Enter_Frame处理程序中绘制多行。
答案 1 :(得分:0)
不确定你是否还在为此工作,但我只是做了类似的事情......
我正在捕捉TOUCH_MOVE,我所做的是使用我提供给绘图功能的touchPointID为坐标创建数组。
每次我的绘图功能触发时,它都会存储"最后触摸位置"该触摸点ID的坐标然后绘制到该touchPointID的新触摸位置(随后将该位置存储为"新的"最后已知的位置等等。)
原始绘图代码是我在网上找到的鼠标捕获代码,我试图适应多点触控。我的功能首先"移动"最后一个已知的触摸位置然后绘制一个" lineto"新的触摸位置。
这或多或少有效,但如果我动作太快,我会得到"楼梯踏步" (直线)在我的曲线上。我不确定这是否是程序的性能问题(我想做所有这些计算)或触摸的限制"解决方案"我的触摸屏显示器(触摸采样率,我想你可以称之为)
Ĵ