Кнопка не работает / работает должным образом в AS3 - PullRequest
0 голосов
/ 18 декабря 2018

Я просто, если что-то не так с моим кодом.Я не думаю, что я ошибся в части кода, но когда я запускаю его, по крайней мере, одна кнопка на этапе не будет работать, как предполагалось.
Вот мой код:

`public function Untitled()
        {
            // constructor code
            init();
        }

        function init():void
        {
            BP = new Array  ;
            RP = new Array  ;
            SP = new Array  ;

            BP2 = new BTB();
            BP2.x = 280;
            BP2.y = 360;
            BP.push(BP2);
            addChild(BP2);

            BP3 = new BTB();
            BP3.x = 360;
            BP3.y = 440;
            BP.push(BP3);
            addChild(BP3);

            RP3 = new BTR  ;
            RP3.x = 280;
            RP3.y = 200;
            RP.push(RP3);
            addChild(RP3);

            RP2 = new BTR;
            RP2.x = 360;
            RP2.y = 280;
            RP.push(RP2);
            addChild(RP2);

            OLL = new OUTLINE  ;
            OLR = new OUTLINE  ;

            for (var a:int = 0; a<BP.length; a++)
            {
                BP[a].addEventListener(MouseEvent.CLICK, SELB);
            }

            for (var d:int = 0; d<RP.length; d++)
            {
                RP[d].addEventListener(MouseEvent.CLICK, SELR);
            }
        }

        //SELECTION FOR BLUE
        function SELB(e:MouseEvent)
        {
            CPB = new Point(e.currentTarget.x,e.currentTarget.y);
            SP.push(e.currentTarget);

            OLL.x = (CPB.x - 80);
            OLL.y = (CPB.y - 80);

            OLR.x = (CPB.x + 80);
            OLR.y = (CPB.y - 80);

            addChild(OLR);
            addChild(OLL);

            OLL.addEventListener(MouseEvent.CLICK, MLB);
            OLR.addEventListener(MouseEvent.CLICK, MRB);
        }

        function MLB(e:MouseEvent)
        {
            for (var b:int = 0; b<SP.length; b++)
            {
                SP[b].x = OLL.x;
                SP[b].y = OLL.y;

                removeChild(OLL);
                removeChild(OLR);

                if (SP[b].hitTestObject(BP3 || BP1 || BP4))
                {
                    SP[b].x = CPB.x;
                    SP[b].y = CPB.y;
                    SP.splice(b, 1);
                }
                else
                {
                    SP.splice(b, 1);
                }
            }
        }

        function MRB(e:MouseEvent)
        {
            for (var c:int = 0; c<SP.length; c++)
            {
                SP[c].x = OLR.x;
                SP[c].y = OLR.y;

                removeChild(OLL);
                removeChild(OLR);

                if (SP[c].hitTestObject(BP3 || BP1 || BP4))
                {
                    SP[c].x = CPB.x;
                    SP[c].y = CPB.y;
                    SP.splice(c, 1);
                }
                else
                {
                    SP.splice(c, 1);
                }
            }
        }


        //SELECTION FOR RED
        function SELR(e:MouseEvent)
        {
            CPR = new Point(e.currentTarget.x,e.currentTarget.y);
            SP.push(e.currentTarget);

            OLL.x = (CPR.x - 80);
            OLL.y = (CPR.y + 80);

            OLR.x = (CPR.x + 80);
            OLR.y = (CPR.y + 80);

            addChild(OLL);
            addChild(OLR);

            OLL.addEventListener(MouseEvent.CLICK, MLR);
            OLR.addEventListener(MouseEvent.CLICK, MRR);
        }

        function MLR(e:MouseEvent)
        {
            for (var f:int = 0; f<SP.length; f++)
            {
                SP[f].x = OLL.x;
                SP[f].y = OLR.y;

                removeChild(OLL);
                removeChild(OLR);

                if (SP[f].hitTestObject(RP1 || RP2))
                {
                    SP[f].x = CPR.x;
                    SP[f].y = CPR.y;
                    SP.splice(f, 1);
                }
                else
                {
                    SP.splice(f, 1);
                }
            }
        }

        function MRR(e:MouseEvent)
        {
            for (var g:int = 0; g<SP.length; g++)
            {
                SP[g].x = OLR.x;
                SP[g].y = OLR.y;

                removeChild(OLL);
                removeChild(OLR);

                if (SP[g].hitTestObject(RP1 || RP2))
                {
                    SP[g].x = CPR.x;
                    SP[g].y = CPR.y;
                    SP.splice(g, 1);
                }
                else
                {
                    SP.splice(g, 1);
                }
            }
        }`

BP, RP, OLL и OLR - все кнопки.Я сделал их кнопками вместо видеоклипов, потому что это более удобно для выбора и отмены выбора.И использовал массивы, чтобы у меня не было слишком длинного кода.
Что должен делать код, так это то, что когда я нажимаю кнопку, два контура (OLL и OLR) появляются либо в верхнем левом и правом углу, либо в нижнем левом и правом в зависимости от того, где находится кнопка.Затем, когда я щелкаю один из этих контуров, кнопка переходит к этому контуру, и оба контура исчезают (removeChild).Кроме того, кнопки не должны складываться вместе, поэтому я отправляю их обратно в последнюю известную позицию.

Проблема, с которой я столкнулся, заключается в том, что хотя бы одна из кнопок не будет работать должным образом (она не перейдет в выбранное положение, но отображаются контуры).Я попытался изменить название кнопок, и возникает та же проблема.Я не знаю, является ли ошибка в моем коде или ошибка совершенно случайна.Я просто хочу знать, есть ли в моем коде часть, которая делает эти ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...