您的位置:首页 > 其它

flash AS3.0学习笔记----拖动棋子所停之处生成新的棋子

2016-04-10 14:40 253 查看

拖动棋子所停之处生成新的棋子

最近通过做项目对棋子拖动问题有了更深一步的了解学习。今天就来给大家分享一下,拖动棋子之后是如何再生成新棋子,然后完成继续拖动下棋的功能。

大概流程:将棋碗里的棋子拖走之后,原来的位置立马生成一颗一模一样的新棋子。并且棋子下的位置都是网格交点上。拖动棋子吸附到网格上,这个之前的博客有讲,本博就不展开讲了。那现在来讲一下如何再原来的位置产生新的棋子呢?

对棋盘上那个棋子做一个监听事件。用MOUSE_DOWN让鼠标按下的时候产生一颗一模一样的棋子。new一个新的棋子,然后addChild到舞台上。具体代码:

import flash.events.MouseEvent;
import flashx.textLayout.formats.WhiteSpaceCollapse;
stop();
mc1.addEventListener(MouseEvent.MOUSE_DOWN,f1)
mc2.addEventListener(MouseEvent.MOUSE_DOWN,f2)
var g,h:int;
var ww=new white();
var xx:Number=500;   //新的黑子生成的位置x坐标
var yy:Number=480;  //新的黑子生成的位置y坐标
var xxx:Number=555;  //白子
var yyy:Number=480;
var chess:int = 40;
var chessboard1 = new Point(53,102);
var bb=new black();
var chessboard:Array = new Array();
var m,n:int;
function f1(e:MouseEvent):void
{

bb=new black();
bb.x=xx;
bb.y=yy;
bb.width=30;
bb.height=30;
stage.addChild(bb);
mc1.startDrag();
mc1.addEventListener(MouseEvent.MOUSE_UP,f3)
bb.startDrag();
bb.addEventListener(MouseEvent.MOUSE_UP,f3)
}
由上面的代码可以看出来,接着又对mc1(黑子)加了一个MOUSE_UP的监听事件。作用是松开鼠标的时候将棋子吸附到网格点上,不能随便落子!
function f3(e:MouseEvent):void
{
m = int((e.stageX - chessboard1.x+ chess/2)/chess);
n = int((e.stageY - chessboard1.y + chess/2)/chess);
e.target.stopDrag();
bb.x=m*chess+chessboard1.x;
bb.y=n*chess+chessboard1.y;
mc1.removeEventListener(MouseEvent.MOUSE_UP,f3);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: