2012-06-09 2 views
1

У меня есть три функции для освобождения при нажатии кнопки. Они почти одинаковы, записаны один за другим. Моя проблема в том, что первая функция (вставленная ниже) работает, но когда я нажимаю вторую и третью кнопку, ничего не происходит. Код для второй и третьей кнопок одинаковый, но используются разные переменные.Проблемы с функциями в Action Script 3.0

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

ответ

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

Большое спасибо, проблема заключалась в добавлении к сцене, некоторые элементы были неправильно преобразованы в movieClip, и это стало причиной моей проблемы. – argh

Смежные вопросы