не добавляйте прослушиватель кликов на ЭТАП, а к своему объекту.
menuData[i].addEventListener(MouseEvent.CLICK, clk, ...);
и добавьте следующую строку в ваш класс menuitem00:
this.mouseChildren = false;
, чтобы вы моглиубедитесь, что evt.target является объектом этого класса, а не дочерним (как текстовое поле или что-то еще).
edit
, если вы хотите сохранитьслушатель сцены, попробуйте это:
stage.addEventListener(MouseEvent.CLICK, clk, ...);
private function clk (evt:MouseEvent):void
{
if (evt.currentTarget is menuitem00)
{
var item:menuitem00 = evt.currentTarget as menuitem00;
trace(item.xml00); // or any other public variable
}
}
, но все равно добавьте mouseChildren = false;
в ваш класс.
edit2
сделайте menuitem00класс sprite (и переименуйте его в pls):
public class MenuItem extends Sprite {
private var _activateFlag:Boolean;
private var _xml:String;
private var _txt:TextField;
private var _id:Number;
public function MenuItem (n:int, xmlf:String) {
trace (" Text Field Object with buffer ");
_id = n;
_xml = xmlf;
_activeFlag = true;
this.mouseChildren = false;
// create txt
_txt = new TextField();
// do the formating here ...
this.addChild(_txt);
}
public function getXml():String {
return _xml;
}
}
в цикле for вы сделаете что-то вроде этого:
for (var i:int = 0; i<Bunker[0]["trans0size"]; i++) {
var item:MenuItem = new MenuItem(i, Bunker[0]["transfile0" + i]);
item.addEventListener(MouseEvent.CLICK, clk, false, 0, true);
menu_mc.addChild(item);
menuData[i] = item;
}
private function clk (evt:MouseEvent):void {
var item:MenuItem = evt.target as MenuItem;
if (item != null) {
trace(item.getXml()); // use a getter and don't access the variable directly
}
}
и pls перечитайте ваш ActionScript (или программирование)книги, вы делаете действительно плохие вещи в своем коде, которые не следует делать.