实例介绍
【实例截图】Flash actionscript3.0 2048
【核心代码】Flash actionscript3.0 2048
package { import flash.display.MovieClip; import flash.display.Sprite; import conanlwl.Key; import conanlwl.Square; import flash.events.Event; import flash.display.DisplayObject; import flash.text.TextField; import flash.text.TextFormat; import flash.text.TextFieldAutoSize; import flash.net.SharedObject; import flash.events.MouseEvent; import flash.utils.ByteArray; public class Game_2048 extends MovieClip { public static const GAME_LINE:int = 20;//游戏方格间隔大小 public static const GAME_ROW:int = 4;//游戏行数 public static const GAME_COL:int = 4;//游戏列数 public static const SQUAREWIDTH:int = 120;//游戏方格大小 private var gameArray:Array;//游戏主数组 private var newNumArray:Array = [2,4];//生成的随机数池 private var infoStage:Sprite;//分数名字层 private var gameStage:Sprite;//游戏面板层 private var tileLayer:Sprite;//方块层 private var score:int = 0;//当前分数 private var bestScore:int = 0;//历史最高分 private var nextMax:int = 0;//下一个最高数目标 private var scoreTxt:TextField;//显示当前分数 private var bestScoreTxt:TextField;///显示最高分数 private var nextMaxTxt:TextField;//提示下一个最高数目标 private var txtUndo:TextField;//Undo的文字提示,外加返回次数显示 private var so:SharedObject; private var hisAry:Array;//历史记录数组 private var maxHisNum:int = 3;//最多保存多少个移动记录 private var moveNum:int = 0;//当前正在移动的方块的个数,为0则为移动停止 public function Game_2048() { // constructor code Init(); //so = SharedObject.getLocal("game2048Data"); //so.clear(); } private function Init():void { gameStage = new Sprite(); tileLayer = new Sprite(); gameStage.addChild(drawBackGround()); gameStage.addChild(tileLayer); addChild(gameStage); //gameStage.x = 60; gameStage.y = 400; drawInfoStage(); gameArray = new Array(); for (var i:int=0; i<GAME_ROW; i ) { var tempAry:Array = new Array(); for (var j:int=0; j<GAME_COL; j ) { tempAry.push(0); } gameArray.push(tempAry); } //游戏开始插入两个新数 chkInsertNewNum(); chkInsertNewNum(); setHistory(gameArray); var key:Key = new Key(stage); key.addEventListener(Key.DOWN,onDown); key.addEventListener(Key.UP,onUp); key.addEventListener(Key.LEFT,onLeft); key.addEventListener(Key.RIGHT,onRight); //bCtrl = true; } private function moveTo(myRow:int,myCol:int,row:int,col:int,isDestroy:Boolean,newNum:int=0):void { var g:Square = tileLayer.getChildByName("b_" myRow.toString() "_" myCol.toString()) as Square; g.addEventListener(Event.ENTER_FRAME,function(e:Event){onMoveTo(e,g,row,col,isDestroy,newNum,arguments.callee)}); moveNum ; } private function destorySquare(g:Square,rmLisn:Function):void { removeLisn(g,rmLisn); g.parent.removeChild(g); } private function removeLisn(g:Square,rmLisn:Function):void { if (rmLisn!=null && g.hasEventListener(Event.ENTER_FRAME)) { g.removeEventListener(Event.ENTER_FRAME,rmLisn); moveNum--; } } //移动完成后检查方块的状态,1.移动后保持位置;2.移动后与另一数合并后,移动距离短的保留;3.移动后与另一数合并后,移动距离长的变成新数,并删除移动距离短的方块 private function chkDestory(isDestory:Boolean,g:Square,rmLisn:Function,newNum:int,row:int,col:int):void { g.Row = row; g.Col = col; g.name = "b_" row.toString() "_" col.toString(); if (isDestory) { destorySquare(g,rmLisn); if (newNum>0) { createQuare(row,col,newNum,false,rmLisn); } return; } else { removeLisn(g,rmLisn); } } //在指定的方格新建方块 private function createQuare(row:int,col:int,num:int,isNew:Boolean=false,rmLisn:Function=null):void { if (! isNew) { var s:String = "b_" row.toString() "_" col.toString(); var obj:Square = tileLayer.getChildByName(s) as Square; if (obj!=null) { destorySquare(obj,rmLisn); } } var g:Square = new Square(num); g.Row = row; g.Col = col; g.name = "b_" row.toString() "_" col.toString(); g.x = GAME_LINE col * (GAME_LINE SQUAREWIDTH); g.y = GAME_LINE row * (GAME_LINE SQUAREWIDTH); if (isNew) { g.scaleX = g.scaleY = 0.6; } else { g.scaleX = g.scaleY = 1.3; } g.addEventListener(Event.ENTER_FRAME,onCreate); tileLayer.addChild(g); } private function onCreate(e:Event):void { var g:Square = e.target as Square; if (g.scaleX < 1) { g.scaleY = g.scaleX = g.scaleX 0.05 > 1 ? 1:g.scaleX 0.05; } else if (g.scaleX>1) { g.scaleY = g.scaleX = g.scaleX - 0.05 < 1 ? 1:g.scaleX - 0.05; } else { g.scaleY = g.scaleX = 1; g.removeEventListener(Event.ENTER_FRAME,onCreate); } //trace(g.scaleX); } //rmLisn移动完需要移除监听函数 private function onMoveTo(e:Event,g:Square,row:int,col:int,isDestory:Boolean,newNum:int=0,rmLisn:Function=null):void { var speed:int = 100;//移动速度 if (g.Row == row && g.Col == col) { chkDestory(isDestory,g,rmLisn,newNum,row,col); } else if (g.Row == row) { //右移 if (g.Col < col) { if (g.x < GAME_LINE col * (GAME_LINE SQUAREWIDTH)) { g.x = speed; if (g.x >= GAME_LINE col * (GAME_LINE SQUAREWIDTH)) { g.x = GAME_LINE col * (GAME_LINE SQUAREWIDTH); chkDestory(isDestory,g,rmLisn,newNum,row,col); } } } else { //左移 if (g.x > GAME_LINE col * (GAME_LINE SQUAREWIDTH)) { g.x -= speed; if (g.x <= GAME_LINE col * (GAME_LINE SQUAREWIDTH)) { g.x = GAME_LINE col * (GAME_LINE SQUAREWIDTH); chkDestory(isDestory,g,rmLisn,newNum,row,col); } } } } else if (g.Col==col) { //下移 if (g.Row < row) { if (g.y < GAME_LINE row * (GAME_LINE SQUAREWIDTH)) { g.y = speed; if (g.y >= GAME_LINE row * (GAME_LINE SQUAREWIDTH)) { g.y = GAME_LINE row * (GAME_LINE SQUAREWIDTH); chkDestory(isDestory,g,rmLisn,newNum,row,col); } } } else { //上移 if (g.y > GAME_LINE row * (GAME_LINE SQUAREWIDTH)) { g.y -= speed; if (g.y <= GAME_LINE row * (GAME_LINE SQUAREWIDTH)) { g.y = GAME_LINE row * (GAME_LINE SQUAREWIDTH); chkDestory(isDestory,g,rmLisn,newNum,row,col); } } } } } //方向键向下 private function onDown(e:Event):void { if (moveNum<1) { moveNum = 0; var bInsNewNum:Boolean = false;//如果按下按键后,没有方块可移动,则不能添加新数 for (var i:uint=0; i<GAME_COL; i ) { var a:Array=new Array(); var needChk:Boolean = true; var posAry:Array= new Array();//记录移动位置的数组 //将该列最后一个不为0的数放到新数组的开头处,然后再往上找一个不为0的数a,如果a与数组的开头数一样,则开头数加倍,a不加入数组,如果不一样,则a加入数组 //然后继续往上找下一个不为零的数,如果前面已经相加过,则此数不与数组的开头数比较,直接将该数加入数组开头处 for (var j:int=GAME_ROW-1; j>=0; j--) { if (gameArray[j][i] > 0) { if (a.length > 0 && gameArray[j][i] == a[0] && needChk) { a[0] *= 2; setNextMax(a[0]); setScore(a[0]); var s:String = posAry[0].toString() "|" j.toString(); posAry.shift(); posAry.unshift(s); needChk = false; } else { posAry.unshift(j.toString()); a.unshift(gameArray[j][i]); needChk = true; } } } //将相加完的值下移 //如果全为0,或四个数都不能相加,不用移动,则跳过 if (a.length > 0 && a.length < GAME_ROW) { while (a.length< GAME_ROW) { a.unshift(0); } while (posAry.length<GAME_ROW) { posAry.unshift(""); } for (var k:int=0; k<GAME_ROW; k ) { gameArray[k][i] = a[k]; if (posAry[k] != "") { //该位置是由两个方块移动组成 //trace(posAry[k]); if ((posAry[k] as String).indexOf("|")>-1) { var tAry:Array = posAry[k].toString().split("|"); if (tAry[0] != k || tAry[1] != k) { bInsNewNum = true; } moveTo(tAry[0],i,k,i,false); moveTo(tAry[1],i,k,i,true,a[k]); } else { //只是移动 if (posAry[k] != k) { bInsNewNum = true; } moveTo(posAry[k],i,k,i,false); } } } } } if (bInsNewNum) { chkInsertNewNum(); setHistory(gameArray); } //trace(gameArray); } } private function onUp(e:Event):void { if (moveNum<1) { moveNum = 0; var bInsNewNum:Boolean = false;//如果按下按键后,没有方块可移动,则不能添加新数 for (var i:int=0; i<GAME_COL; i ) { var a:Array=new Array(); var needChk:Boolean = true; var posAry:Array= new Array();//记录移动位置的数组 //将该列最后一个不为0的数放到新数组的开头处,然后再往上找一个不为0的数a,如果a与数组的开头数一样,则开头数加倍,a不加入数组,如果不一样,则a加入数组 //然后继续往上找下一个不为零的数,如果前面已经相加过,则此数不与数组的开头数比较,直接将该数加入数组开头处 for (var j:int=0; j<GAME_ROW; j ) { if (gameArray[j][i] > 0) { if (a.length > 0 && gameArray[j][i] == a[a.length - 1] && needChk) { a[a.length-1] *= 2; setNextMax(a[a.length-1]); setScore(a[a.length-1]); var s:String = posAry[posAry.length - 1].toString() "|" j.toString(); posAry.pop(); posAry.push(s); needChk = false; } else { posAry.push(j.toString()); a.push(gameArray[j][i]); needChk = true; } } } //trace(posAry); //将相加完的值下移 //如果全为0,或四个数都不能相加,不用移动,则跳过 if (a.length > 0 && a.length < GAME_ROW) { while (a.length< GAME_ROW) { a.push(0); } while (posAry.length<GAME_ROW) { posAry.push(""); } for (var k:int=0; k<GAME_ROW; k ) { gameArray[k][i] = a[k]; if (posAry[k] != "") { //该位置是由两个方块移动组成 //trace(posAry[k]); if (posAry[k].toString().indexOf("|") > -1) { var tAry:Array =(posAry[k] as String).split("|"); if (tAry[0] != k || tAry[1] != k) { bInsNewNum = true; } moveTo(tAry[0],i,k,i,false); moveTo(tAry[1],i,k,i,true,a[k]); } else { //只是移动 if (posAry[k] != k) { bInsNewNum = true; } moveTo(posAry[k],i,k,i,false); } } } } } if (bInsNewNum) { chkInsertNewNum(); setHistory(gameArray); } //trace(gameArray); } } private function onLeft(e:Event):void { if (moveNum<1) { moveNum = 0; var bInsNewNum:Boolean = false;//如果按下按键后,没有方块可移动,则不能添加新数 for (var i:uint=0; i<GAME_ROW; i ) { var a:Array=new Array(); var needChk:Boolean = true; var posAry:Array= new Array();//记录移动位置的数组 //将该列最后一个不为0的数放到新数组的开头处,然后再往上找一个不为0的数a,如果a与数组的开头数一样,则开头数加倍,a不加入数组,如果不一样,则a加入数组 //然后继续往上找下一个不为零的数,如果前面已经相加过,则此数不与数组的开头数比较,直接将该数加入数组开头处 for (var j:int=0; j<GAME_COL; j ) { if (gameArray[i][j] > 0) { if (a.length > 0 && gameArray[i][j] == a[a.length - 1] && needChk) { a[a.length-1] *= 2; setNextMax(a[a.length-1]); setScore(a[a.length-1]); var s:String = posAry[posAry.length - 1].toString() "|" j.toString(); posAry.pop(); posAry.push(s); needChk = false; } else { posAry.push(j.toString()); a.push(gameArray[i][j]); needChk = true; } } } //将相加完的值下移 //如果全为0,或四个数都不能相加,不用移动,则跳过 if (a.length > 0 && a.length < GAME_COL) { while (a.length< GAME_COL) { a.push(0); } while (posAry.length<GAME_COL) { posAry.push(""); } for (var k:int=0; k<GAME_COL; k ) { gameArray[i][k] = a[k]; if (posAry[k] != "") { //该位置是由两个方块移动组成 if (posAry[k].toString().indexOf("|") > -1) { var tAry:Array = posAry[k].toString().split("|"); if (tAry[0] != k || tAry[1] != k) { bInsNewNum = true; } moveTo(i,tAry[0],i,k,false); moveTo(i,tAry[1],i,k,true,a[k]); } else { //只是移动 if (posAry[k] != k) { bInsNewNum = true; } moveTo(i,posAry[k],i,k,false); } } } } } if (bInsNewNum) { chkInsertNewNum(); setHistory(gameArray); } //trace(gameArray); } } private function onRight(e:Event):void { if (moveNum<1) { moveNum = 0; var bInsNewNum:Boolean = false;//如果按下按键后,没有方块可移动,则不能添加新数 for (var i:uint=0; i<GAME_ROW; i ) { var a:Array=new Array(); var needChk:Boolean = true; var posAry:Array= new Array();//记录移动位置的数组 //将该列最后一个不为0的数放到新数组的开头处,然后再往上找一个不为0的数a,如果a与数组的开头数一样,则开头数加倍,a不加入数组,如果不一样,则a加入数组 //然后继续往上找下一个不为零的数,如果前面已经相加过,则此数不与数组的开头数比较,直接将该数加入数组开头处 for (var j:int=GAME_COL-1; j>=0; j--) { if (gameArray[i][j] > 0) { if (a.length > 0 && gameArray[i][j] == a[0] && needChk) { a[0] *= 2; setScore(a[0]); setNextMax(a[0]); var s:String = posAry[0].toString() "|" j.toString(); posAry.shift(); posAry.unshift(s); needChk = false; } else { posAry.unshift(j.toString()); a.unshift(gameArray[i][j]); needChk = true; } } } //将相加完的值下移 //如果全为0,或四个数都不能相加,不用移动,则跳过 if (a.length > 0 && a.length < GAME_COL) { while (a.length< GAME_COL) { a.unshift(0); } while (posAry.length<GAME_COL) { posAry.unshift(""); } for (var k:int=0; k<GAME_COL; k ) { gameArray[i][k] = a[k]; if (posAry[k] != "") { //该位置是由两个方块移动组成 if ((posAry[k] as String).indexOf("|")>-1) { var tAry:Array =(posAry[k] as String).split("|"); if (tAry[0] != k || tAry[1] != k) { bInsNewNum = true; } moveTo(i,tAry[0],i,k,false); moveTo(i,tAry[1],i,k,true,a[k]); } else { //只是移动 if (posAry[k] != k) { bInsNewNum = true; } moveTo(i,posAry[k],i,k,false); } } } } } if (bInsNewNum) { chkInsertNewNum(); setHistory(gameArray); } //trace(gameArray); } } //确保生成新数是在移动完成后才生成的 private function chkInsertNewNum():Boolean {// //if (moveNum<1) //{ //insertNewNum(); //} //else //{ //gameStage.addEventListener(Event.ENTER_FRAME,onChkMoveNum); //} // //function onChkMoveNum(e:Event):void //{ //if (moveNum<1) //{ //insertNewNum(); //gameStage.removeEventListener(Event.ENTER_FRAME,onChkMoveNum); //} //} //当空格数为0时,则检查是否为死局 if (insertNewNum()<1) { for (var i:int=0; i<GAME_ROW; i ) { for (var j:int=0; j<GAME_COL; j ) { if (j<GAME_COL-1) { if (gameArray[i][j] == gameArray[i][j 1]) { return true; } } if (i<GAME_ROW-1) { if (gameArray[i][j] == gameArray[i 1][j]) { return true; } } } } trace("dead"); return false; } return true; } //插入一个新数,并返回剩余空格数 private function insertNewNum():int { var zp:Array = getZeroPos(); //trace(zp); if (zp.length > 0) { var np:Array = zp[getRandom(zp.length)];//随机获得一个空格的位置 var newNum:int = newNumArray[getRandom(newNumArray.length)];//从新数池里取数 gameArray[np[0]][np[1]] = newNum;//在该位置上随机生成预置数 createQuare(np[0],np[1],newNum,true); } return zp.length-1; } //获得所有空格的位置 private function getZeroPos():Array { var zeroPos:Array = new Array(); for (var i:uint=0; i<GAME_ROW; i ) { for (var j:uint=0; j<GAME_COL; j ) { if (gameArray[i][j] == 0) { zeroPos.push([i,j]); } } } //将数组中为0的位置记录下来; return zeroPos; } private function drawBackGround():Sprite { var bgWidth:int = SQUAREWIDTH * GAME_COL GAME_LINE * (GAME_COL 1); var bgHeight:int = SQUAREWIDTH * GAME_ROW GAME_LINE * (GAME_ROW 1); var s:Sprite=new Sprite(); s.graphics.beginFill(0xBBADA0); s.graphics.drawRoundRect(0,0,bgWidth,bgHeight,20,20); s.graphics.endFill(); for (var i:uint=0; i<GAME_ROW; i ) { for (var j:uint=0; j<GAME_COL; j ) { var b:Sprite=new Sprite(); b.graphics.beginFill(0xCCC0B4); b.graphics.drawRoundRect(GAME_LINE j*(SQUAREWIDTH GAME_LINE),GAME_LINE i*(SQUAREWIDTH GAME_LINE),SQUAREWIDTH,SQUAREWIDTH,5,5); b.graphics.endFill(); s.addChild(b); } } s.x = s.y = - SQUAREWIDTH / 2; gameStage.x = (700 - s.width)/2; return s; } private function drawInfoStage():void { score = 0; bestScore = 0; so = SharedObject.getLocal("game2048Data"); if (so!=null) { if (so.data.bestScore != undefined) { bestScore = so.data.bestScore; } else { so.data.bestScore = bestScore; so.flush(); } if (so.data.nextMax != undefined) { nextMax = so.data.nextMax; } else { so.data.nextMax = 2048; so.flush(); } } infoStage = new Sprite(); var tit:Sprite = new Sprite(); tit.graphics.beginFill(0xecc400); tit.graphics.drawRoundRect(0,0,200,200,20,20); tit.graphics.endFill(); var t2048:TextField = new TextField(); var t2048fmt:TextFormat = new TextFormat(); t2048fmt.font = "Arial"; t2048fmt.color = 0xffffff; t2048fmt.bold = true; t2048fmt.size = 80; t2048.text = "2048"; t2048.setTextFormat(t2048fmt); t2048.selectable = false; t2048.autoSize = TextFieldAutoSize.CENTER; t2048.x = (200 - t2048.width) / 2; t2048.y = (200 - t2048.height) / 2; tit.addChild(t2048); infoStage.addChild(tit); var scoreBG:Sprite = new Sprite(); scoreBG.graphics.beginFill(0xbbada0); scoreBG.graphics.drawRoundRect(0,0,160,125,10,10); scoreBG.graphics.drawRoundRect(190,0,160,125,10,10); scoreBG.graphics.endFill(); var tFenShu:TextField = new TextField(); var sFmt:TextFormat = new TextFormat(); sFmt.color = 0xeee4d5; sFmt.bold = true; sFmt.size = 30; sFmt.font = "Arial"; tFenShu.text = "SCORE"; tFenShu.setTextFormat(sFmt); tFenShu.selectable = false; tFenShu.autoSize = TextFieldAutoSize.CENTER; tFenShu.x = (160 - tFenShu.textWidth) / 2; tFenShu.y = 10; var tBestFenShu:TextField = new TextField(); tBestFenShu.text = "BEST"; tBestFenShu.setTextFormat(sFmt); tBestFenShu.selectable = false; tBestFenShu.autoSize = TextFieldAutoSize.CENTER; tBestFenShu.x = (160 - tBestFenShu.textWidth) / 2 190; tBestFenShu.y = 10; scoreTxt = new TextField(); bestScoreTxt = new TextField(); setScore(0); scoreBG.addChild(tFenShu); scoreBG.addChild(tBestFenShu); scoreBG.addChild(scoreTxt); scoreBG.addChild(bestScoreTxt); infoStage.addChild(scoreBG); scoreBG.x = 230; var butFmt:TextFormat = new TextFormat(); butFmt.color = 0xffffff; butFmt.size = 20; butFmt.font = "Arial"; butFmt.bold = true; //restart var rsBut:Sprite = new Sprite(); rsBut.graphics.beginFill(0xed995b); rsBut.graphics.drawRoundRect(0,0,160,60,10,10); rsBut.graphics.endFill(); rsBut.x = 230; rsBut.y = 140; var txtRestart:TextField = new TextField(); txtRestart.text = "RESTART"; txtRestart.setTextFormat(butFmt); txtRestart.selectable = false; rsBut.addChild(txtRestart); txtRestart.x = (160 - txtRestart.textWidth) / 2; txtRestart.y = (60 - txtRestart.textHeight) / 2; txtRestart.height = txtRestart.textHeight; rsBut.buttonMode = true; rsBut.mouseChildren = false; //undo var udBut:Sprite = new Sprite(); udBut.graphics.beginFill(0xed995b); udBut.graphics.drawRoundRect(0,0,160,60,10,10); udBut.graphics.endFill(); udBut.x = 420; udBut.y = 140; txtUndo = new TextField(); if (hisAry !=null) { while (hisAry.length>0) { hisAry.pop(); } } setHistory(null); udBut.addChild(txtUndo); udBut.buttonMode = true; udBut.mouseChildren = false; rsBut.addEventListener(MouseEvent.CLICK,onReStart); udBut.addEventListener(MouseEvent.CLICK,onUnDo); infoStage.addChild(rsBut); infoStage.addChild(udBut); nextMaxTxt = new TextField(); setNextMax(0); nextMaxTxt.y = 230; infoStage.addChild(nextMaxTxt); addChild(infoStage); infoStage.x = 0; infoStage.y = 40; } private function onUnDo(e:MouseEvent):void { if (hisAry.length > 1 && maxHisNum>0) { for (var i:uint=0; i<GAME_ROW; i ) { for (var j:uint=0; j<GAME_COL; j ) { gameArray[i][j] = hisAry[1][i][j];//此处坐标为1 } } hisAry.shift(); drawGameTile(gameArray); maxHisNum--; setHistory(null); } } private function setHistory(ary:Array):void { if (hisAry == null) { hisAry = new Array(); } if (ary!=null) { //数组复制 var copy:Array; var bty:ByteArray = new ByteArray(); bty.writeObject(ary); bty.position = 0; copy = bty.readObject(); hisAry.unshift(copy); } if (hisAry.length > maxHisNum 1) { hisAry.pop(); } var fmt:TextFormat = new TextFormat("Arial",20,0xffffff,true); txtUndo.text = "UNDO(" maxHisNum.toString() ")"; txtUndo.setTextFormat(fmt); txtUndo.selectable = false; txtUndo.x = (160 - txtUndo.textWidth) / 2; txtUndo.y = (60 - txtUndo.textHeight) / 2; txtUndo.height = txtUndo.textHeight; } private function onReStart(e:MouseEvent):void { while(hisAry.length>0)hisAry.pop(); while (tileLayer.numChildren>0) { tileLayer.removeChildAt(0); } score = 0; setScore(0); setNextMax(0); gameArray = new Array(); for (var i:int=0; i<GAME_ROW; i ) { var tempAry:Array = new Array(); for (var j:int=0; j<GAME_COL; j ) { tempAry.push(0); } gameArray.push(tempAry); } //游戏开始插入两个新数 chkInsertNewNum(); chkInsertNewNum(); setHistory(gameArray); } private function drawGameTile(ary:Array):void { while (tileLayer.numChildren>0) { tileLayer.removeChildAt(0); } for (var i:uint=0; i<GAME_ROW; i ) { for (var j:uint=0; j<GAME_COL; j ) { if (ary[i][j] > 0) { var g:Square = new Square(ary[i][j]); g.y = GAME_LINE i * (GAME_LINE SQUAREWIDTH); g.x = GAME_LINE j * (GAME_LINE SQUAREWIDTH); g.name = "b_" i.toString() "_" j.toString(); g.Row = i; g.Col = j; tileLayer.addChild(g); } } } } //显示下一个最大值,当n=0时为初始化调用 private function setNextMax(n:int) { if (n>nextMax || n==0) { nextMax = n; if (so.data.nextMax <= nextMax) { so.data.nextMax *= 2; so.flush(); } var fmt:TextFormat = new TextFormat("Arial",20,0x776e65,true); nextMaxTxt.text = "Join the numbers and get to the " so.data.nextMax.toString() " tile!"; nextMaxTxt.setTextFormat(fmt); nextMaxTxt.selectable = false; nextMaxTxt.width = nextMaxTxt.textWidth; } } private function setScore(n:int):void { score = n; if (score>so.data.bestScore) { so.data.bestScore = score; so.flush(); bestScore = score; } var scoreFmt:TextFormat = new TextFormat(); scoreFmt.color = 0xffffff; scoreFmt.bold = true; scoreFmt.font = "Arial"; scoreFmt.size = 40; scoreTxt.text = score.toString(); scoreTxt.setTextFormat(scoreFmt); scoreTxt.selectable = false; scoreTxt.autoSize = TextFieldAutoSize.CENTER; scoreTxt.x = (160 - scoreTxt.width) / 2; scoreTxt.y = 60; bestScoreTxt.text = bestScore.toString(); bestScoreTxt.setTextFormat(scoreFmt); bestScoreTxt.selectable = false; bestScoreTxt.autoSize = TextFieldAutoSize.CENTER; bestScoreTxt.x = (160 - bestScoreTxt.width) / 2 190; bestScoreTxt.y = 60; } //获得小于a的随机正数 private function getRandom(a:int):int { return Math.floor(a*Math.random()); } } }
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论