Я просто, если что-то не так с моим кодом.Я не думаю, что я ошибся в части кода, но когда я запускаю его, по крайней мере, одна кнопка на этапе не будет работать, как предполагалось.
Вот мой код:
`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
).Кроме того, кнопки не должны складываться вместе, поэтому я отправляю их обратно в последнюю известную позицию.
Проблема, с которой я столкнулся, заключается в том, что хотя бы одна из кнопок не будет работать должным образом (она не перейдет в выбранное положение, но отображаются контуры).Я попытался изменить название кнопок, и возникает та же проблема.Я не знаю, является ли ошибка в моем коде или ошибка совершенно случайна.Я просто хочу знать, есть ли в моем коде часть, которая делает эти ошибки.