如何使用as3检测鼠标手势.docx

上传人:啊飒飒 文档编号:10788648 上传时间:2021-06-04 格式:DOCX 页数:9 大小:30.83KB
返回 下载 相关 举报
如何使用as3检测鼠标手势.docx_第1页
第1页 / 共9页
如何使用as3检测鼠标手势.docx_第2页
第2页 / 共9页
如何使用as3检测鼠标手势.docx_第3页
第3页 / 共9页
如何使用as3检测鼠标手势.docx_第4页
第4页 / 共9页
如何使用as3检测鼠标手势.docx_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《如何使用as3检测鼠标手势.docx》由会员分享,可在线阅读,更多相关《如何使用as3检测鼠标手势.docx(9页珍藏版)》请在三一文库上搜索。

1、如何使用as3检测鼠标手势来源:9RIA.com天地会作者:superDin 编译2010年07月20日 16:00网友评论:0条点击:833原文:http:/ Emanuele Feronato在计算领域,一个指针设备的手势或者是一个鼠标的手势结合了指针设备的运动和点击,这种手势可以被一些软件识别到并作为一个具体的命令。指针设备的手势可以快速访问一个程序的命令功能。它们也可以方便一些敲打键盘有困难的人士。例如,在一个浏览器中,用户如果想回到前一个浏览页面,他可以按住鼠标右键并向左拖一小段距离,然后松开右键。我总是先描述我的想法和代码,再展示运行结果。而今天,我会先从结果开始: 左上象限:在这

2、个象限你可以通过鼠标进行简单绘画:按住鼠标然后拖动鼠标。你可以看到,蓝色的线条代表了你的鼠标的运行过程。右上象限:红色的线条代表了经过过滤之后的鼠标运动。我不想跟踪距离非常短的运动,所以我只会显示距离大于20像素的运动。左下象限:绿色的线条代表了另一种过滤之后的鼠标运动,我把鼠标的可能运动方向限制在了8个方向:上,下,左,右,和四个对角线。右下象限:这里用于显示对绿色线条的文字描述,并删除了一些重复的运动,例如像“left left left right”将会变成left left。1. packageimportflash.display.Sprite;importflash.events.

3、MouseEvent;importflash.events.Event;importflash.text.TextField;publicclassgestureextendsSpritepublicvardrawing:Boolean=false;publicvarfreemouse:Sprite=newSprite();publicvarstepmouse:Sprite=newSprite();publicvardirmouse:Sprite=newSprite();publicvarthe_grid:grid=newgrid();publicvarpx,py,px2,py2:int;pu

4、blicvardirections:TextField=newTextField();publicvarlatest_direction:Number;publicfunctiongesture():voidaddChild(the_grid);addChild(freemouse);addChild(stepmouse);addChild(dirmouse);addChild(directions);stepmouse.x=250;dirmouse.y=200;directions.x=250;directions.y=200;directions.height=200;addEventLi

5、stener(Event.ENTER_FRAME,on_enter_frame);stage.addEventListener(MouseEvent.MOUSE_DOWN,on_mouse_down);stage.addEventListener(MouseEvent.MOUSE_UP,on_mouse_up);publicfunctionon_mouse_down(e:MouseEvent):voidif(!drawing)directions.text=;latest_direction=-1;drawing=true;freemouse.graphics.clear();freemous

6、e.graphics.lineStyle(1,0x0000ff);freemouse.graphics.moveTo(mouseX,mouseY);stepmouse.graphics.clear();stepmouse.graphics.lineStyle(1,0xff0000);stepmouse.graphics.moveTo(mouseX,mouseY);dirmouse.graphics.clear();dirmouse.graphics.lineStyle(1,0x00ff00);dirmouse.graphics.moveTo(mouseX,mouseY);px=px2=mous

7、eX;py=py2=mouseY;publicfunctionon_mouse_up(e:MouseEvent):voiddrawing=false;publicfunctionon_enter_frame(e:Event):voidif(drawing)freemouse.graphics.lineTo(mouseX,mouseY);vardx=px-mouseX;vardy=py-mouseY;vardistance:Number=dx*dx+dy*dy;if(distance400)stepmouse.graphics.lineTo(mouseX,mouseY);varangle:Num

8、ber=Math.atan2(dy,dx)*57.2957795;varrefined_angle:Number;varstring_dir:String;if(angle=22*-1&angle=23&angle=68&angle=113&angle=135|angle=157*-1&angle=112*-1&angle=67*-1&angle22*-1)refined_angle=-Math.PI/4;string_dir=DownLeftn;px2-=Math.sqrt(distance)*Math.cos(refined_angle);py2-=Math.sqrt(distance)*Math.sin(refined_angle);if(refined_angle!=latest_direction)directions.appendText(string_dir);latest_direction=refined_angle;dirmouse.graphics.lineTo(px2,py2);px=mouseX;py=mouseY;现在你差不多可以在你的代码中使用鼠标手势了.你只要添加一些Levenshtein distance调整就可以大功告成了.我将会在下一次告诉你怎么做,你已经有想法了?

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1