自拖进框
package com{ import flash.display.MovieClip; import flash.events.MouseEvent; import flash.geom.Rectangle; import flash.display.Stage; import flash.geom.ColorTransform; import flash.display.SimpleButton; public class GMwrod3 { private var dragMC:MovieClip; private var startX:Number; private var startY:Number; private var newDrag:MovieClip; private var rec:Rectangle; private var stageMc:Stage; private var str1:String; private var str2:String; private var str3:String; private var hitMcArr:Array; private var rightNum:Number;//拖对多少个后才可以进行连接 private var moveMc:MovieClip; private var startNun:Number;//检测是不是从第一个开始 private var emptyMc:MovieClip; private var XYArr:Array; private var newDragArr:Array; public function GMwrod3(_dragMC:MovieClip,_stageMc:Stage,_rightNum:Number) { dragMC=_dragMC; stageMc=_stageMc; rightNum=_rightNum; startNun=1; XYArr=[[],[]]; newDragArr=[]; for (var i:uint=0; i<dragMC.numChildren; i++) { var dragMc:MovieClip=dragMC.getChildAt(i) as MovieClip; dragMc.addEventListener(MouseEvent.MOUSE_UP,onDrag); dragMc.addEventListener(MouseEvent.MOUSE_DOWN,onDrag); } hitMcArr=[]; emptyMc=new MovieClip(); dragMC.addChildAt(emptyMc,0); } private function onDrag(e:MouseEvent) { var str:String=e.currentTarget.name; if ((str!="noMove")&&str.slice(0,5)!="hitMc") { newDrag=e.currentTarget as MovieClip; if (e.type=="mouseDown") { if (hitMcArr.length==rightNum) { stageMc.addEventListener(MouseEvent.MOUSE_UP,onStage); dragMC.addEventListener(MouseEvent.MOUSE_MOVE,onStage); } else { startX=newDrag.x; startY=newDrag.y; newDrag.startDrag(); dragMC.setChildIndex(newDrag,dragMC.numChildren-1); str1=newDrag.name.slice(2,3); str2=newDrag.name.slice(4,5); str3=newDrag.name.slice(6,7); } } else if (e.type=="mouseUp"&&hitMcArr.length<rightNum&&hitMcArr.length<rightNum) { newDrag.stopDrag(); outFor:for (var i:uint=0; i<dragMC.numChildren; i++) { if (newDrag.hitTestObject(dragMC.getChildAt(i))&&dragMC.getChildAt(i).name!=newDrag.name) { var hitName:String=dragMC.getChildAt(i).name; if ((hitName!="noMove")&&hitName.slice(0,1)!="a") { if (hitName.slice(-1)==str1||hitName.slice(-1)==str2||hitName.slice(-1)==str3) { if (hitMcArr.indexOf(hitName)==-1) { XYArr[0].push(startX); XYArr[1].push(startY); newDrag.x=dragMC[hitName].x; newDrag.y=dragMC[hitName].y; newDrag.mouseChildren=false; newDrag.mouseEnabled=false; newDragArr.push(newDrag); hitMcArr.push(hitName); if (hitMcArr.length==rightNum) { for (var k:uint=0; k<newDragArr.length; k++) { newDragArr[k].mouseEnabled=true; newDragArr[k].mouseChildren=true; } } break outFor; } else { newDrag.x=startX; newDrag.y=startY; } } else { newDrag.x=startX; newDrag.y=startY; } } } else { if (i==dragMC.numChildren-1) { newDrag.x=startX; newDrag.y=startY; } } } } } } private function onStage(e:MouseEvent) { var eTarParent:MovieClip; if (e.type=="mouseMove") { eTarParent=e.target.parent; var num:Number=int(eTarParent.getChildAt(0).name.slice(3)); trace(num); if (num==startNun) { //划线 MyMusic.changeSound("诗词解谜点击音效") if (startNun==1) { DrawLine.DrawLineStart(eTarParent.x+eTarParent.width/2,eTarParent.y+eTarParent.height/2); } else { DrawLine.DrawLineStop(eTarParent.x+eTarParent.width/2,eTarParent.y+eTarParent.height/2,emptyMc); } var mc0:MovieClip=eTarParent.getChildAt(0) as MovieClip; var mc1:MovieClip=eTarParent.getChildAt(1) as MovieClip; mc0.alpha=1; var b:ColorTransform=new ColorTransform(); b.color=0xFFFFFF; mc1.transform.colorTransform=b; startNun++; } else if (startNun-num>2) { init(); } } else { stageMc.removeEventListener(MouseEvent.MOUSE_UP,onStage); dragMC.removeEventListener(MouseEvent.MOUSE_MOVE,onStage); if (startNun==15) { thisMc.gotoAndStop(thisMc.currentFrame+2); } } } private function init() { startNun=1; stageMc.removeEventListener(MouseEvent.MOUSE_UP,onStage); dragMC.removeEventListener(MouseEvent.MOUSE_MOVE,onStage); for (var o:uint=0; o<emptyMc.numChildren; o++) { emptyMc.removeChildAt(o); } for (var i:uint=0; i<dragMC.numChildren; i++) { if (dragMC.getChildAt(i).name.slice(0,1)=="a") { var mc:MovieClip=dragMC.getChildAt(i) as MovieClip; var mc0:MovieClip=mc.getChildAt(0) as MovieClip; var mc1:MovieClip=mc.getChildAt(1) as MovieClip; mc0.alpha=0; var b:ColorTransform=new ColorTransform(); b.color=0x9F3D1B; mc1.transform.colorTransform=b; } } } private var resetBtn:SimpleButton; private var hintBtn:SimpleButton; private var thisMc:MovieClip; public function toolFun(_thisMc:MovieClip,_resetBtn:SimpleButton,_hintBtn:SimpleButton) { resetBtn=_resetBtn; hintBtn=_hintBtn; thisMc=_thisMc; if (resetBtn.hasEventListener(MouseEvent.CLICK)==false) { hintBtn.addEventListener(MouseEvent.MOUSE_UP,onHint); hintBtn.addEventListener(MouseEvent.MOUSE_DOWN,onHint); resetBtn.addEventListener(MouseEvent.CLICK,onReset); } } private function onHint(e:MouseEvent) { if (e.type=="mouseDown") { thisMc.gotoAndStop(thisMc.currentFrame+1); } else { thisMc.gotoAndStop(thisMc.currentFrame-1); } } private function onReset(e:MouseEvent) { var xyArrLength:Number=XYArr[0].length-1; for (var i:uint=0; i<newDragArr.length; i++) { if (i==newDragArr.length -1) { newDragArr[i].mouseEnabled=true; newDragArr[i].mouseChildren=true; } else { newDragArr[i].mouseEnabled=false; newDragArr[i].mouseChildren=false; } } newDragArr[xyArrLength].x=XYArr[0][xyArrLength]; newDragArr[xyArrLength].y=XYArr[1][xyArrLength]; hitMcArr.pop(); XYArr[1].pop(); XYArr[0].pop(); newDragArr.pop(); } } }
很啰嗦不建议
posted on 2018-12-27 16:44 zqiang0803 阅读(130) 评论(0) 编辑 收藏 举报