触摸事件和鼠标事件之间的区别
通过上一节中的示例,我们可以看到触摸事件与鼠标有很多相似之处。区别在于触摸事件可以是多点,而鼠标事件始终是单点。如果程序不需要使用多点触摸功能,而只需要传统的单点交互,那么使用鼠标事件就可以满足需求。
实际上,与鼠标事件相比,AIR运行时花费更多的资源来监视触摸事件(包括下一节中描述的手势动作)。在运行TouchEventEx程序时,如果手指在屏幕上移动得太快,则点的移动会明显延迟。

为了更清楚地说明两个事件之间的区别,可以使用MouseEvent重写TouchEventEx程序。修改后的代码位于MouseEventEx项目中,主程序Main.as如下:

- package
- {
- import flash.display.Graphics;
- import flash.display.Sprite;
- import flash.events.MouseEvent;
- public class Main extends AppBase
- {
- override protected function init():void
- {
- //改为MOUSE_DOWN和MOUSE_UP事件
- stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler);
- stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUpHandler);
- }
- /**
- * 创建一个Sprite,画圆
- */
- private function createCircle():Sprite
- {
- var box:Sprite = new Sprite();
- var g:Graphics = box.graphics;
- g.beginFill(0x808888);
- g.drawCircle(0, 0, 30);
- g.endFill();
- return box;
- }
- private function onMouseDownHandler(e:MouseEvent):void
- {
- //在触摸点处添加一个圆
- var box:Sprite = createCircle();
- addChild(box);
- //将元件移到触摸点对应的舞台坐标处
- box.x = e.stageX;
- box.y = e.stageY;
- //开始拖拽元件
- box.startDrag();
- }
- private function onMouseUpHandler(e:MouseEvent):void
- {
- //结束拖拽
- e.target.stopDrag();
- }
- }
- }

我相信读者在阅读了这部分代码后会感到非常熟悉。在此处使用鼠标事件MOUSE_DOWN和MOUSE_UP以及startDrag和stopDrag,它们在Flash开发中很常见。

在真实计算机上运行MouseEventEx,无论同时使用多少手指触摸屏幕,程序始终仅对鼠标事件做出一次响应。此外,拖动点时没有延迟感,这显然比TouchEventEx程序的运行效果更平滑。

使用MouseEvent的另一个优点是,该代码可以与桌面系统兼容。在开发跨平台项目时,这一点尤其重要。例如,可以调试MouseEventEx程序,然后在桌面上运行或在模拟器上运行。
[编辑推荐]
AIR Android:使用运行程序AIR Android:在真实计算机上运行程序AIR Android:关于多点触摸AIR Android:使用TouchEvent类(1)AIR Android:使用TouchEvent类(2)
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/bofangqi/article-342994-1.html
66666666666666666
就一艘破军舰
我滴天啊
美帝是纸考虎