Action Script 3.0中的函数问题

时间:2012-06-09 17:39:11

标签: actionscript-3 events event-handling listener

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

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};
    }
}

1 个答案:

答案 0 :(得分: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};
}