【游客模式】——注册会员,加入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鼠标拖拽、拖动、滑动+点击(防止冲突)的小练习,网友问的,于是分享之
|