package com{ import flash.display.MovieClip; import flash.events.MouseEvent; import flash.display.SimpleButton; import flash.utils.Timer; import flash.events.TimerEvent; import flash.geom.ColorTransform; import flash.display.Stage; public class Game extends MovieClip { private var startX:Number; private var startY:Number; private var hitMc:MovieClip; private var dragMc:MovieClip; private var eTarMc:MovieClip; private var newDrag:MovieClip; private var hitStr1:String; private var hitStr2:String; private var dragStr1:String; private var dragStr2:String; private var stepNum:Number; private var mcArr:Array; private var newArr:Array; private var XYArr:Array; private var newHitArr:Array; private var newDragArr:Array; private var rightArr:Array; private var rightNum:Number; private var lineMc:MovieClip; private var squareMc:MovieClip; private var emptyMc:MovieClip; private var thisMc:MovieClip; private var stageStage:Stage; public function Game(_dragMc:MovieClip,_stage:Stage) { dragMc=_dragMc; dragMc.buttonMode=true; stageStage=_stage; dragMc.addEventListener(MouseEvent.MOUSE_UP,onClick); dragMc.addEventListener(MouseEvent.MOUSE_DOWN,onClick); newArr=[]; XYArr=[[],[]]; newHitArr=[]; newDragArr=[]; rightArr=[]; stepNum=1; rightNum=1; thisMc=dragMc.parent as MovieClip; emptyMc=new MovieClip(); thisMc.addChild(emptyMc); emptyMc.x=dragMc.x; emptyMc.y=dragMc.y; thisMc.setChildindex(emptyMc,thisMc.getChildindex(dragMc)-1); } //====================================================================================================================== private var resetBtn:SimpleButton; private var hintBtn:SimpleButton; private var hintMc1:MovieClip; private var hintMc2:MovieClip; private var hintMc3:MovieClip; private var hintMc4:MovieClip; public function toolFun(_resetBtn:SimpleButton,_hintBtn:SimpleButton) { resetBtn=_resetBtn; hintBtn=_hintBtn; if (resetBtn.hasEventListener(MouseEvent.CLICK)==false) { hintBtn.addEventListener(MouseEvent.CLICK,onHint); resetBtn.addEventListener(MouseEvent.CLICK,onReset); if(thisMc.currentFrame==1){ MyMusic.changeSound("诗词解谜游戏提示"); }} } private function onHint(e:MouseEvent) { var stepNum:Number; for (var n:uint=1; n<=6; n++) { for (var i:uint=0; i<dragMc.numChildren; i++) { stepNum=Number(dragMc.getChildAt(i).name.slice(3,4)); if (stepNum==n) { var newMc:MovieClip=dragMc.getChildAt(i) as MovieClip; if (newMc.mouseChildren==true) { newArr.push(newMc.name); } } } } outFor:for (var k:uint=0; k<newArr.length; k++) { var lastNum:Number=Number(newArr[k].slice(3,4)); for (var j:uint=0; j<newArr.length; j++) { if (k!=j) { if (lastNum==Number(newArr[j].slice(3,4))) { hintMc1=MovieClip(dragMc.getChildByName(newArr[j]) as MovieClip).getChildAt(1) as MovieClip; hintMc2=MovieClip(dragMc.getChildByName(newArr[k]) as MovieClip).getChildAt(1) as MovieClip; hintMc3=MovieClip(dragMc.getChildByName(newArr[j]) as MovieClip).getChildAt(0) as MovieClip; hintMc4=MovieClip(dragMc.getChildByName(newArr[k]) as MovieClip).getChildAt(0) as MovieClip; var t:Timer=new Timer(300,4); if (t.hasEventListener(TimerEvent.TIMER)==false) { t.addEventListener(TimerEvent.TIMER,onT); } t.start(); function onT(e:TimerEvent) { if (t.currentCount!=4) { MovieClip(hintMc4.parent).setChildindex(hintMc4,MovieClip(hintMc4.parent).numChildren-1); MovieClip(hintMc3.parent).setChildindex(hintMc3,MovieClip(hintMc3.parent).numChildren-1); } else { MovieClip(hintMc1.parent).setChildindex(hintMc1,MovieClip(hintMc1.parent).numChildren-1); MovieClip(hintMc2.parent).setChildindex(hintMc2,MovieClip(hintMc2.parent).numChildren-1); } if (t.currentCount%2==0) { hintMc1.alpha=hintMc2.alpha=0; var a:ColorTransform=new ColorTransform(); a.color=0x9F3D1B; hintMc3.transform.colorTransform=hintMc4.transform.colorTransform=a; } else { hintMc1.alpha=hintMc2.alpha=1; var b:ColorTransform=new ColorTransform(); b.color=0xFFFFFF; hintMc3.transform.colorTransform=hintMc4.transform.colorTransform=b; } } break outFor; } } } } newArr=[]; } private function onReset(e:MouseEvent) { var xyArrLength:Number=XYArr[0].length-1; newHitArr[xyArrLength].mouseEnabled=true; newHitArr[xyArrLength].mouseChildren=true; newDragArr[xyArrLength].mouseEnabled=true; newDragArr[xyArrLength].mouseChildren=true; newDragArr[xyArrLength].x=XYArr[0][xyArrLength]; newDragArr[xyArrLength].y=XYArr[1][xyArrLength]; XYArr[1].pop(); XYArr[0].pop(); newHitArr.pop(); newDragArr.pop(); for (var f:uint=0; f<newHitArr.length; f++) { newHitArr[f].mouseEnabled=false; newHitArr[f].mouseChildren=false; newDragArr[f].mouseEnabled=false; newDragArr[f].mouseChildren=false; } } //================================================================================ private function onClick(e:MouseEvent) { if (e.type=="mouseDown") { eTarMc=e.target as MovieClip; newDrag=eTarMc.parent as MovieClip; startX=newDrag.x; startY=newDrag.y; if (newDragArr.length<6) { dragMc.setChildindex(newDrag,dragMc.numChildren-1); newDrag.startDrag(); } else if (newDragArr.length==6) { dragMc.addEventListener(MouseEvent.MOUSE_MOVE,onMove); stageStage.addEventListener(MouseEvent.MOUSE_UP,onClick); } } else if (e.type=="mouseUp"&&newDragArr.length<6) { stopDrag(); for (var i:uint=dragMc.numChildren-1; i>0; i--) { if (newDrag.name=="drag") { newDrag.x=startX; newDrag.y=startY; } else if (newDrag.hitTestObject(dragMc.getChildAt(i))&&newDrag.name!=dragMc.getChildAt(i).name) { hitMc=dragMc.getChildAt(i) as MovieClip; hitStr1=hitMc.name.slice(0,1); hitStr2=hitMc.name.slice(1,2); dragStr1=newDrag.name.slice(0,1); dragStr2=newDrag.name.slice(1,2); if (hitMc.name.slice(-4)=="sure"&&newDrag.name.slice(-4)=="sure"||hitStr1==dragStr1) { newDrag.x=hitMc.x; newDrag.y=hitMc.y; hitMc.mouseEnabled=false; hitMc.mouseChildren=false; newDrag.mouseEnabled=false; newDrag.mouseChildren=false; newHitArr.push(hitMc); newDragArr.push(newDrag); XYArr[0].push(startX); XYArr[1].push(startY); if (newDragArr.length==6) { for (var f:uint=0; f<newHitArr.length; f++) { newHitArr[f].mouseEnabled=true; newHitArr[f].mouseChildren=true; newDragArr[f].mouseEnabled=true; newDragArr[f].mouseChildren=true; } } } else { newDrag.x=startX; newDrag.y=startY; } break; } else { if (i==1) { newDrag.x=startX; newDrag.y=startY; } } } } else if (newDragArr.length>=6) { dragMc.removeEventListener(MouseEvent.MOUSE_MOVE,onMove); stageStage.removeEventListener(MouseEvent.MOUSE_UP,onClick); if (rightNum!=15) { init(); rightNum=1; }else{ init(); thisMc.nextFrame() } trace(rightNum); } } private function onMove(e:MouseEvent) { if (newDragArr.length>=6) { for (var d:uint=0; d<newHitArr.length; d++) { newHitArr[d].mouseEnabled=true; newHitArr[d].mouseChildren=true; newDragArr[d].mouseEnabled=true; newDragArr[d].mouseChildren=true; } eTarMc=e.target as MovieClip; newDrag=eTarMc.parent as MovieClip; var eTarNum:Number=Number(eTarMc.name.slice(3)); if (rightNum==eTarNum) { //划线 if (rightNum==1) { Line.Linestart(newDrag.x,newDrag.y); } else { Line.Linestop(newDrag.x,newDrag.y,emptyMc); } rightNum++; var mc0:MovieClip=newDrag.getChildAt(0) as MovieClip; var mc1:MovieClip=newDrag.getChildAt(1) as MovieClip; var b:ColorTransform=new ColorTransform(); b.color=0xFFFFFF; mc0.transform.colorTransform=b; for (var i:uint=0; i<newHitArr.length; i++) { if (newDrag.hitTestObject(newHitArr[i])) { var newHitMc:MovieClip=newHitArr[i]; var newHitMc0:MovieClip=newHitMc.getChildAt(0) as MovieClip; var newHitMc1:MovieClip=newHitMc.getChildAt(1) as MovieClip; newHitMc0.transform.colorTransform=b; newHitMc1.alpha=1; newHitMc.setChildindex(newHitMc0,newHitMc.getChildindex(newHitMc1)); break; } else { if (i==newHitArr.length -1) { mc1.alpha=1; newDrag.setChildindex(mc0,newDrag.getChildindex(mc1)); } } } } else if (eTarNum==20) { init(); } } } private function init() { dragMc.removeEventListener(MouseEvent.MOUSE_MOVE,onMove); for (var h:uint=0; h<dragMc.numChildren; h++) { var backMc:MovieClip=dragMc.getChildAt(h) as MovieClip;//获取dragMc里面的mc var backMc0:MovieClip=new MovieClip(); var backMc1:MovieClip=new MovieClip(); if (backMc.getChildAt(0).name.slice(0,2)=="di") { backMc0=backMc.getChildAt(0) as MovieClip; backMc1=backMc.getChildAt(1) as MovieClip; } else { backMc0=backMc.getChildAt(1) as MovieClip; backMc1=backMc.getChildAt(0) as MovieClip; } backMc0.alpha=0; var c:ColorTransform=new ColorTransform(); c.color=0x9F3D1B; backMc1.transform.colorTransform=c; backMc.setChildindex(backMc0,backMc.numChildren-1); } for (var p:Number=0; p<emptyMc.numChildren; p++) { emptyMc.removeChildAt(p); } } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。