自拖进框

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编辑  收藏  举报

导航