1

单击按钮时,我有三个要释放的功能。它们几乎一样,一个接一个地写下来。我的问题是第一个功能(粘贴在下面)有效,但是当我单击第二个和第三个按钮时没有任何反应。第二个和第三个按钮的代码相同,但使用了不同的变量。

redStarts.addEventListener(MouseEvent.CLICK, redBars);

function redBars(event:Event)
{
    red1Starts.addEventListener(Event.ENTER_FRAME, r1);
    red2Starts.addEventListener(Event.ENTER_FRAME, r2);
    red3Starts.addEventListener(Event.ENTER_FRAME, r3);

    function r1(event:Event)
    {
        if (red1Starts.y > 200){red1Starts.y -= 4};
    }

    function r2(event:Event)
    {
        if (red2Starts.y > 20){red2Starts.y -= 4};
    }

    function r3(event:Event)
    {
        if (red3Starts.y > 120){red3Starts.y -= 4};
    }
}
4

1 回答 1

6

避免使用嵌套函数。您提到的变量值似乎保留在闭包中。试试这种方式:

redStarts.addEventListener(MouseEvent.CLICK, redBars);

function redBars(event:Event)
{
  red1Starts.addEventListener(Event.ENTER_FRAME, r1);
  red2Starts.addEventListener(Event.ENTER_FRAME, r2);
  red3Starts.addEventListener(Event.ENTER_FRAME, r3);
}

function r1(event:Event)
{
  if (red1Starts.y > 200){red1Starts.y -= 4};
}

function r2(event:Event)
{
  if (red2Starts.y > 20){red2Starts.y -= 4};
}

function r3(event:Event)
{
  if (red3Starts.y > 120){red3Starts.y -= 4};
}
于 2012-06-09T17:44:00.110 回答