这可能是一个长镜头,但希望有人可以帮助我。
我在带有10点触摸屏的戴尔Inspiron笔记本电脑上运行Windows 10 64位。我可以触摸触摸事件,但他们并没有按照我所喜欢的方式工作。
首先获得一些初步信息。在触摸屏Windows 10 PC上,尝试触摸并按住背景。透明的白色方块应从小到大补间,表示如果释放该触摸,则会发生右键单击。而不是释放,在其他地方添加第二次触摸。广场应该从大到小消失。这是正常行为,应该发生在具有右键单击功能的任何地方。
现在打开谷歌浏览器(我刚刚更新到新版本58,但我认为任何版本都可以)。按照之前的步骤观看广场消失。现在,在仍然按住手指的同时,再次触摸其他地方,并继续点击。注意尽管已经消失,但是在同一个地方一遍又一遍地补间。如果您释放原始触摸,它会记住触摸释放的点并继续补间该位置的方块。在Chrome中,您可以使用双指点按来调出右键单击菜单,我怀疑这个问题出现在任何有双指轻击右键单击功能的地方。我怀疑这是一个Windows错误而不是Chrome错误。
当我在FlashDevelop中测试我的程序时,会出现同样的问题。当只有一次触摸时,程序响应非常快,但是当有多次触摸时,事件可能会相当滞后。我在四种环境中进行了测试,结果如下:
因此,理想的行为似乎是在Internet Explorer中发生的事情,我希望它能在任何地方发生。我想知道是否有抑制双指触控功能的方法,或者是否有其他方法可以解决此问题(我已经尝试拦截MouseEvent.RIGHT_CLICK事件和它没有用)。这是我的代码:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TouchEvent;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.ui.Multitouch;
import flash.ui.MultitouchInputMode;
/**
* ...
* @author Kyle Delaney
*/
[Frame(factoryClass="Preloader")]
public class Main extends Sprite
{
private static var _output_txt:TextField = new TextField();
public function Main()
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
graphics.beginFill(0);
graphics.drawRect( -5, -5, stage.stageWidth + 5, stage.stageHeight + 5);
var tf:TextFormat = new TextFormat();
tf.font = "Courier New";
tf.size = "14";
_output_txt.defaultTextFormat = tf;
_output_txt.wordWrap = true;
_output_txt.width = stage.stageWidth /2;
_output_txt.height = stage.stageHeight;
_output_txt.selectable = false;
_output_txt.mouseEnabled = false;
_output_txt.background = true;
_output_txt.alpha = 0.5;
addChild(_output_txt);
print("init()");
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
addEventListener(TouchEvent.TOUCH_BEGIN, touchBegin);
addEventListener(TouchEvent.TOUCH_END, touchEnd);
//addEventListener(TouchEvent.TOUCH_MOVE, touchMove);
addEventListener(TouchEvent.TOUCH_TAP, touchTap);
}
private function touchTap(e:TouchEvent):void
{
print("touchTap() " + e.touchPointID);
}
private function touchMove(e:TouchEvent):void
{
print("touchMove() " + e.touchPointID);
}
private function touchEnd(e:TouchEvent):void
{
print("touchEnd() " + e.touchPointID);
}
private function touchBegin(e:TouchEvent):void
{
print("touchBegin() " + e.touchPointID);
}
private function mouseDown(e:MouseEvent):void
{
print("mouseDown");
}
public static function print(str:String):void
{
if (_output_txt)
{
_output_txt.appendText(str + '\n');
if (_output_txt.length > 10000) _output_txt.replaceText(0, 5000, "");
_output_txt.scrollV = _output_txt.maxScrollV;
}
}
}
}
以上是swf的上传:http://www.newgrounds.com/dump/item/8eb8b87e551f48db7e0e50c66d3178ff