我只会在我的代码有问题的情况下使用。我不认为我在部分代码中出了差错,但是当我运行它时,阶段中的至少一个按钮将无法按预期工作。
这是我的代码:
`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
)。另外,按钮不应堆叠在一起,因此我将它们发送回其最后一个已知位置。
我遇到的问题是,至少有一个按钮将无法正常工作(它将不会移至所选位置,但会显示轮廓)。我试图更改按钮的名称,并且发生相同的问题。我不知道这是我的代码中的错误还是该错误是完全随机的。我只想知道我的代码中是否存在导致这些错误的部分。