11RIA 闪客社区 - 最赞 Animate Flash 论坛

搜索
查看: 4936|回复: 18
上一主题 下一主题

[鼠标交互] 【9RIA—iloveas】— AS3游戏实用技巧(3):巧用事件api简化鼠标拖动流程

[复制链接] TA的其它主题
发表于 2018-12-14 10:33:20 | 显示全部楼层 |阅读模式

【游客模式】——注册会员,加入11RIA 闪客社区吧!一起见证Flash的再次辉煌……

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 TKCB 于 2018-12-19 09:54 编辑

转载:9RIA游戏开发者社区(天地会)
作者:iloveas(原天地会大神)


总目录:[原创]AS3游戏开发实用技巧汇总



键盘的东西写了两篇,突然想不到还有什么键可以给大家分享的了,就先写篇鼠标的吧。
首先讲讲拖动,按照一般人的定义,拖动就是鼠标按下的时候移动鼠标,这里面有三个过程,分别是按下、移动鼠标和弹起。以stage为例,大家的实现步骤通常如下:
(PS:此处不讨论startDrag和stopDrag的使用,因为这个方法过于局限,诸如切水果一类的,startDrag能做的到么)
第一步,监听鼠标按下事件,并开始监听移动,同时为了让弹起时不再拖动,我们还要监听弹起事件:

[Actionscript3] 纯文本查看 复制代码
stage.addEventListener(MouseEvent.MOUSE_DOWN, stageMouseDownHandler);
function stageMouseDownHandler(event:MouseEvent):void{
  stage.addEventListener(MouseEvent.MOUSE_MOVE, stageMouseMoveHandler);
  stage.addEventListener(MouseEvent.MOUSE_UP, stageMouseUpHandler);
}


第二步,在stageMouseMoveHandler里执行拖动的操作:

[Actionscript3] 纯文本查看 复制代码
function stageMouseMoveHandler(event:MouseEvent):void{
  //在这里运行拖动相关的代码
}


第三步,stageMouseUpHandler里移除按下时的监听:

[Actionscript3] 纯文本查看 复制代码
function stageMouseUpHandler(event:MouseEvent):void{
  stage.removeEventListener(MouseEvent.MOUSE_MOVE, stageMouseMoveHandler);
  stage.removeEventListener(MouseEvent.MOUSE_UP, stageMouseUpHandler);
}


这样的代码看起来可不是一般的繁琐,如果项目的代码量大了(小项目的代码量有时也不少),这么写容易让程序结构变乱,可读性严重下降。对于大项目来说,我们还可以封装一下,但对于中小项目来说,封装可能都嫌麻烦。
其实,借助鼠标事件的一个api,以上三步完全可以简化为一步:
游客,如果您要查看本帖隐藏内容请回复

这样看起来是不是清爽了很多呢?不过此法虽然简化了代码,但是代价是稍稍牺牲了运行效率,对性能要求极高的场合还是得慎用。
本帖介绍的方法相信很多人都知道了,但我还是设置了回复可见,不然心里不踏实,给点时间让iloveas好好适应下吧,谢谢!


TKCB分享:
AS3鼠标拖拽、拖动、滑动+点击(防止冲突)的小练习,网友问的,于是分享之
发表于 2018-12-14 11:28:07 | 显示全部楼层
收藏学习!
回复

使用道具 举报

发表于 2019-7-25 12:20:41 | 显示全部楼层
收藏学习!
回复

使用道具 举报

发表于 2019-7-25 13:38:31 | 显示全部楼层
学习了··
回复

使用道具 举报

发表于 2019-7-31 10:00:32 | 显示全部楼层
      
回复

使用道具 举报

发表于 2019-11-12 03:05:32 | 显示全部楼层
AS3游戏实用技巧(3):巧用事件api简化鼠标拖动流程
回复

使用道具 举报

发表于 2019-11-12 09:41:00 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2019-11-13 17:14:26 | 显示全部楼层
学习学习
回复

使用道具 举报

发表于 2019-12-2 23:50:23 | 显示全部楼层
学习一下 感谢您的分享
回复

使用道具 举报

发表于 2019-12-6 20:51:32 | 显示全部楼层
想要学习一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)



快速回复 返回顶部 返回列表