flash AS3.0学习笔记-拖动棋子(吸附)到棋盘对应网格中心

来源:互联网 发布:4g网络优化师 编辑:程序博客网 时间:2024/06/05 10:31

          博主目前在做一个小项目:将棋子拖动到棋盘上,并且松掉鼠标的时候棋子被吸附到网格点上。

      刚开始没有什么思路,不过经大神爆爆粒指导之后发现了套路,现在将该方法分享给大家!

先来看一下我的代码:

import flash.events.MouseEvent;stop();white.addEventListener(MouseEvent.MOUSE_UP,w1)black.addEventListener(MouseEvent.MOUSE_UP,b1)white.addEventListener(MouseEvent.MOUSE_DOWN,w2)black.addEventListener(MouseEvent.MOUSE_DOWN,b2)function w2(e:MouseEvent){    e.target.startDrag();//开始拖动}function w1(e:MouseEvent){    e.target.stopDrag();//停止拖动    e.target.x=(int)((mouseX-120)/19.1)*19.1+110;//落在网格点上    e.target.y=(int)((mouseY-92)/19.1)*19.1+82;//落在网格点上}function b2(e:MouseEvent){    e.target.startDrag();//开始拖动}function b1(e:MouseEvent){    e.target.stopDrag();//停止拖动    e.target.x=(int)((mouseX-120)/19.1)*19.1+110;//落在网格点上    e.target.y=(int)((mouseY-92)/19.1)*19.1+82;//落在网格点上}

代码很简洁明了,就是有一个叫white的影片剪辑(白子),和一个叫black的影片剪辑(黑子)。先都给他们做个监听,MOUSE_UP,MOUSE_DOWN。通过:

e:target.startDrag();

e:target.stopDrog();

这两句代码先实现拖动和放置。
接下俩就可以研究一下如何让它放置在网格点上了。

首先,我们要量一下棋盘的左上角的那个网格点的实际坐标,然后通过这样一个算法:来确保棋子落在网格点上。

   e.target.x=(int)((mouseX-120)/19.1)*19.1+110;//落在网格点上   e.target.y=(int)((mouseY-92)/19.1)*19.1+82;//落在网格点上

前面用int();强制将坐标转换成1.2.3.这样的整数。但是最后一定要乘以网格的宽度。

再加上左上角的实际坐标(刚刚量的),!!!这里会有一些误差导致棋子不能落在具体的网格点上,但是运行出来

之后可以看出来已经有吸附的功能了,所以接着自己看着改改加减的数来调试一下就OK了。
就是这样,现在大家应该知道如何吸附了吧。


0 0
原创粉丝点击