Action Script 3.0中的函数问题

arg*_*rgh 1 events event-handling listener actionscript-3

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

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};
    }
}
Run Code Online (Sandbox Code Playgroud)

Flo*_*vic 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};
}
Run Code Online (Sandbox Code Playgroud)