文档类: /** * @author : 熊俊程 * @date : 10.1.14 * @未实现功能:经过第一次碰撞后,第2次碰撞不检测 * */ package com.xjc { import com.xjc.manager.LevelManager; import flash.display.SimpleButton; import flash.display.Sprite; import flash.events.MouseEvent; public class Application extends Sprite { private var _nextLevel_btn : SimpleButton; private var levelManager : LevelManager; private var levelList : Array = ["fBoard" , "sBoard" , "tBoard"]; private var index : int = 0; public function Application() { _nextLevel_btn = this.getChildByName("nextLevel_btn") as SimpleButton; _nextLevel_btn.addEventListener(MouseEvent.CLICK , __nextLevel); createBoard(); } private function createBoard() : void { levelManager = new LevelManager(); addChildAt(levelManager , 0); _nextLevel_btn.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); } private function __nextLevel(e : MouseEvent) : void { levelManager.startGame(levelList[index]); index++; if(index > levelList.length - 1) { index = 0; } } } } 关卡管理: package com.xjc.manager { import com.xjc.chessboard.ChessBoard; import com.xjc.chessboard.CreateBoard; import com.xjc.effect.move.MoveAction; import com.xjc.effect.move.MoveProxy; import com.xjc.events.ParameterEvent; import com.xjc.role.Charactor; import com.xjc.role.Other; import com.xjc.role.Self; import com.xjc.utils.GC; import com.xjc.view.Grid; import flash.display.Sprite; import flash.events.MouseEvent; import flash.geom.Point; public class LevelManager extends Sprite { private var bgContainer : Sprite; private var creatb : CreateBoard; private var isdrag : Boolean; private var lastX : Number; private var lastY : Number; private var chessList : Array = new Array(); private var self : Self; private var other : Other; public function LevelManager() { bgContainer = new Sprite(); addChild(bgContainer); creatb = new CreateBoard(); MoveAction.getInstance().addEventListener(MoveAction.MOVE_END , __moveEnd); bgContainer.addEventListener(MouseEvent.MOUSE_DOWN , __down); bgContainer.addEventListener(MouseEvent.MOUSE_UP , __up); bgContainer.addEventListener(MouseEvent.MOUSE_OUT , __out); } public function startGame(level : String) : void { remove(); drawChess(level); } private function drawChess(level : String) : void { chessList = new Array(); var board : ChessBoard = creatb.creator(level); bgContainer.addChild(board); chessList = board.list; for(var i : int = 0 ; i < chessList.length ; i++) { chessList[i].addEventListener(MouseEvent.CLICK , __gridClick); } other = new Other(chessList[4]); bgContainer.addChild(other); self = new Self(chessList[0]); bgContainer.addChild(self); bgContainer.addChildAt(drawBottom() , 0); } private function __gridClick(e : MouseEvent) : void { var grid : Grid = e.target as Grid; if(!self.isMove) { if(grid.index == self.index) return; if(grid.index < self.index) { for(var i : int = self.index + 1 ; i <= chessList.length - 1 ; i++) { self.moveList.push(chessList[i]); } for(var i : int = 0 ; i <= grid.index; i++) { self.moveList.push(chessList[i]); } }else if(grid.index > self.index) { for(var i : int = self.index + 1 ; i <= grid.index ; i++) { self.moveList.push(chessList[i]); } } if(self.checkPoint(other , chessList)) { MoveProxy.addNode(self , self.pointList); MoveProxy.addNode(other , other.pointList); MoveAction.getInstance().moveTarget(self , self.speed); MoveAction.getInstance().moveTarget(other , other.speed , other.delay); }else { self.addPoint(self.moveList); MoveProxy.addNode(self , self.pointList); MoveAction.getInstance().moveTarget(self , self.speed); } self.isMove = true; } } private function __down(e : MouseEvent) : void { isdrag = true; lastX = mouseX; lastY = mouseY; bgContainer.addEventListener(MouseEvent.MOUSE_MOVE , __move); } private function __move(e : MouseEvent) : void { if(isdrag) { // bgContainer.x += mouseX - lastX; // bgContainer.y += mouseY - lastY; bgContainer.startDrag(); e.updateAfterEvent(); } } private function __up(e : MouseEvent) : void { bgContainer.stopDrag(); isdrag = false; bgContainer.removeEventListener(MouseEvent.MOUSE_MOVE , __move); } private function __out(e : MouseEvent) : void { bgContainer.stopDrag(); isdrag = false; bgContainer.removeEventListener(MouseEvent.MOUSE_MOVE , __move); } private function drawBottom() : Sprite { var bottom : Sprite = new Sprite(); bottom.graphics.beginFill(0x000000 , 0); bottom.graphics.drawRect(0 , 0 , this.width , this.height); bottom.graphics.endFill(); return bottom; } private function __moveEnd(e : ParameterEvent) : void { if(e.getParameter()._target is Charactor) { var c : Charactor = e.getParameter()._target; c.clear(); } } private function remove() : void { for(var i : int = 0 ; i < chessList.length ; i++) { chessList[i].removeEventListener(MouseEvent.CLICK , __gridClick); if(chessList[i].parent != null) chessList[i].parent.removeChild(chessList[i]); chessList[i] = null; } while(bgContainer.numChildren > 0) bgContainer.removeChildAt(0); GC.clear(); } } } 源文件下载: http://download.youkuaiyun.com/source/2334872