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

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

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

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

        对棋盘上那个棋子做一个监听事件。用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);
}

你可能感兴趣的:(Flash,AS3.0)