2015-04-03 3 views
0

Я пытаюсь динамически добавлять кнопки, а затем назначать им прослушиватели событий. За что мой код,Action Script: вызов соответствующих функций при нажатии кнопки

var i=0; 
    var step=50; 
    for each (var child:XML in courseXML.footer.tray.elements()) 
    {   
     var thumbClip:thumb = new thumb(); 
     //set name 
     thumbClip.name = "mc_thumb" + (i + 1); 
     trace("thumbClipname:: "+thumbClip.name); 
     //set the x and y values 
     thumbClip.x = 620 + (i * step); 
     thumbClip.y = 560; 

     //attach the newly created instance to the container 
     addChild(thumbClip); 
     trace("thumbClip:: "+thumbClip); 

     //attach icon image from xml path 
     thumbClip.thumbLoader.source = child.icon; 
     trace("thumbClip.thumbLoader.source: "+thumbClip.thumbLoader.source); 

     //add listeners 
     trace("Node name "+ child.localName()); 
     if(child.localName().toLowerCase() == "feedback"); 
     { trace("gotoFeedback.."); 
      thumbClip.addEventListener(MouseEvent.CLICK, gotoFeedback); 
     } 
     if(child.localName().toLowerCase() == "resources"); 
     { trace("gotoResources.."); 
      thumbClip.addEventListener(MouseEvent.CLICK, gotoResources); 
     } 
     if(child.localName().toLowerCase() == "glossary"); 
     { trace("gotoGlossary.."); 
      thumbClip.addEventListener(MouseEvent.CLICK, gotoGlossary); 
     } 
     if(child.localName().toLowerCase() == "discussion"); 
     { trace("gotoDiscussion.."); 
      thumbClip.addEventListener(MouseEvent.CLICK, gotoDiscussion); 
     } 

     thumbClip.buttonMode = true; 
     i++; 
    } 

Итак, наконец 4 кнопки отображается на сцене, и при нажатии на любой кнопке все четыре функции gotofeedback, gotoResources, gotoGlossary, gotoDiscussion называется. Как вызвать соответствующие функции при нажатии кнопки? Благодаря!

The four functions are: 
function gotoFeedback(e: MouseEvent):void 
{ 
    trace("gotofeedback fn called.."); 
} 
function gotoResources(e: MouseEvent):void 
{ 
    trace("gotoResources fn called.."); 
} 
function gotoGlossary(e: MouseEvent):void 
{ 
    trace("gotoGlossary fn called.."); 
} 
function gotoDiscussion(e: MouseEvent):void 
{ 
    trace("gotoDiscussion fn called.."); 
} 
+1

Где ваши функции gotoFeedback, gotoResources и т. Д. Определены? – Barett

+0

Вам нужно будет показать больше информации, чтобы диагностировать эту проблему. Как отметил Баретт, покажите код для ваших функций, названных 'goto'. Кроме того, проделали ли вы простую отладку с помощью операторов трассировки? Это всегда самый простой способ выяснить проблему, если вы отлаживаете навыки, которые все еще нуждаются в переработке. ;) –

ответ

0

Необходимо добавить слушателей событий к дочерним кнопкам, а не к thumbClip. То, как у вас есть свой код сейчас, всякий раз, когда мышь нажата в любом месте внутри thumbClip, вызывается все слушатели (это то, что вы видите).

+0

Кажется, что каждая 'thumbClip' _is_ - одна кнопка, но по какой-то причине все четыре функции' goto' выполняются, если они ссылаются на вещи на временной шкале, которые могут быть неправильно настроены. –

+0

Хороший момент - я бросился читать код. Возможно, было бы интересно добавить трассировку target и currentTarget для проведения мероприятий –

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