2013-08-25 5 views
0

Моя галерея изображений имеет 8 кадров. Есть несколько строк AS3 на AS3 слой в первом кадре:addEventListener добавление снова и снова

stop(); 

var picsArrayYouthVillage:Array = new Array(pic1,pic2,pic3,pic4,pic5,pic6,pic7,pic8); 
for each (var pic in picsArrayYouthVillage) 
{ 
pic.buttonMode = true; 
} 



for(var i = 0; i<8; i++) 
{ 

trace("hi"); 
picsArrayYouthVillage[i].addEventListener(MouseEvent.CLICK, jumpToFrame); 

} 

function jumpToFrame(m:MouseEvent):void{ 
gotoAndStop(m.target.name + "_frame"); 

} 

На слое картинки есть 8 кадров, содержащие фотографии и кнопки эскизов (pic1, ... pic8)

Проблема когда я перемещаюсь с помощью больших пальцев, каждый раз, когда я нажимаю первую кнопку и перескакиваю в кадр 1, слушатели событий снова добавляются.

Любые идеи? Спасибо всем заранее.

ответ

0

Вы можете проверить объект имеет прослушиватель событий или нет, прежде чем добавить слушателя событий для его

for(var i = 0; i<8; i++) { 

    if (!picsArrayYouthVillage[i].hasEventListener(MouseEvent.CLICK)) { 
     trace("hi"); 
     picsArrayYouthVillage[i].addEventListener(MouseEvent.CLICK, jumpToFrame); 
    } 

} 

EDIT

После того как я попробовал код, я нашел эту проблему, измените этот код слишком

var picsArrayYouthVillage:Array = new Array(pic1,pic2,pic3,pic4,pic5,pic6,pic7,pic8); 

в

var picsArrayYouthVillage:Array; 

if (picsArrayYouthVillage == null) { 
    picsArrayYouthVillage = new Array(pic1,pic2,pic3,pic4,pic5,pic6,pic7,pic8); 
} 

Не забудьте проследить hi в условии if. Если это сработает, оно должно быть восемь и только один раз.

+0

Я пробовал это, но он все еще добавляет те evtListeners. он отслеживает эти 8 дополнительных «привет» в окне вывода, когда я иду в кадр 1. –

+0

Я отредактировал ответ, надеюсь, что это поможет. – Pan

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