Сценарий действия 3: foreach рисующий объект в мувиклипе

У меня есть карта Европы, разработанная во flash (1 муви-клип, 1 кадр, очень просто), которая содержит карту в виде объектов для рисования непосредственно внутри сцены и, кроме того, некоторые конкретные страны в виде кнопок, на которые можно нажать. Пока работает нормально. Что мне сейчас нужно, так это сделать все остальные объекты рисования кликабельными без необходимости редактирования и написания скриптов для каждого объекта. Я думаю о чем-то вроде этого (псевдокод):

foreach(obj in MovieClip) {
    if(obj !typeof(Button)) {
        obj.addEventListener(MouseEvent.MOUSE_DOWN, genericClickListener);
    }
}

Я просто не знаю синтаксиса, как этого добиться. Может ли кто-нибудь дать мне подсказку?

Спасибо, Матиас


person maff    schedule 26.05.2010    source источник


Ответы (1)


Попробуй это:

function genericClickHandler(event:Event):void {
  trace('clicked');
}

// loop through all children
for (var i:int = 0; i < numChildren; i++) {
  var child:Object = getChildAt(i) as Object; 
  // check if display is not a button and check if it has a buttonMode property
  if (!(child is SimpleButton) && child.hasOwnProperty('buttonMode')) {
    child.buttonMode = true;
    child.addEventListener(MouseEvent.CLICK, genericClickHandler, false, 0, true);
  }
}
person Shiki    schedule 26.05.2010
comment
К сожалению, он не выбирает простые объекты рисования, но преобразование всех соответствующих областей в символы выполняется за несколько минут. Большое спасибо за решение :) - person maff; 26.05.2010