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

来源:互联网 发布:淘宝店铺优惠券平台 编辑:程序博客网 时间:2024/05/22 17:03

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

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

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

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

0 0