2014-09-03 38 views
0

我正在使用多点触控屏幕上的动作脚本3绘制应用程序..代码运行良好,除了一个错误..当我使用两个手指时,它不画两条单独的线......但连接它们as3多点触控绘图应用

两个手指一点触,使一条线,而不是两个点

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

如果您使用超类事件,则无法访问TouchEvent类的宝贵触点。您使用该ID区分触摸。 – BotMaster 2014-09-03 16:48:26

回答

0

不知道,如果你还在工作,但我只是做了类似的东西...

我捕捉TOUCH_MOVE和我所做的就是利用我喂到我的绘图中的touchPointID创建坐标阵列功能。

每当我的绘图函数触发时,它将存储touchPointID的“最后一次触摸位置”坐标,然后绘制该touchPointID的新触摸位置(随后将此位置存储为“新”最后已知位置,等等上)。

原始绘图代码是我在网上找到的鼠标捕捉的东西,我试图适应多点触控。我的功能首先“移动”最后一次已知的触摸位置,然后绘制一个“lineto”新的触摸位置。

这或多或少有效,但如果我移动得太快,我会在曲线上得到“阶梯”(直线)。我不知道这是否是该程序的性能问题(我想是做所有这些计算)还是限制了触摸屏显示器的触摸“分辨率”(触摸采样率,我想你可以称之为)

J

+0

关于上面提到的“楼梯踏步”......我进一步意识到实际发生的事情是as3 lineto功能在每次“移动”当前位置时都将“端盖”放在线上(必须启用多点触控正如我所做的那样)。如果没有moveTo,它会形成一条连续的线,没有中间的终点。但是,触摸点全部没有连接在一起。 只要线条完全不透明,我的问题并不明显,但它不是完美的解决方案,但.JJ – Jay 2014-12-06 06:20:34

0

看起来你只有一个画布。因此,当你呼叫lineTo时,它只会从先前的位置画线,而不管这个先前的位置是由一个或另一个触摸发起的。快速的想法(可能不是最好的)是有多个向量来存储触摸的位置点。然后,您可以在Enter_Frame处理程序中绘制多行。