Если я вас правильно понимаю, кажется, все, что вам нужно, это дескриптор мувиклипа внутри вашего tileList и оттуда вы хотите добавить прослушиватель событий.
Есть много способов получить указатель для мувиклипа в вашем тайле. Во-первых, я бы сказал, что вы должны использовать dataProvider в соответствии с приведенным здесь примером . Это послужит моделью для вашего экранного объекта. Оттуда вы можете просто получить доступ к желаемому мувиклипу из списка, как в:
import fl.controls.TileList;
import fl.data.DataProvider;
var dp:DataProvider = new DataProvider();
dp.addItem(moviClip1);
dp.addItem(moviClip2);
dp.addItem(moviClip3);
dp.addItem(moviClip4);
var myTileList:TileList = new TileList();
myTileList.dataProvider = dp;
addChild(myTileList);
...
//sometime later in the code
//this adds a listener to movieClip3
dp.getItemAt(3).addEventListener(MouseEvent.CLICK, onClick);
...
//or
for (var mc in dp.toArray()) {
(mc as DisplayObject).addEventListener(MouseEvent.CLICK, onClick);
}
Другой подход (если вы не можете работать с поставщиком данных) - попытать счастья с помощью следующих методов TileList:
getChildAt(index:int):DisplayObject
getChildByName(name:String):DisplayObject
getChildIndex(child:DisplayObject):int
getItemAt(index:uint):Object
и посмотрите, сможете ли вы получить доступ к желаемому клипу. Если бы это был я, я бы проверил что-то вроде:
var mc:MovieClip = myTileList.getChildAt(1) as MovieClip;
if(mc != null) mc.addEventListener(MouseEvent.CLICK, doSomethingWhenClicked);
public void function doSomethingWhenClicked(event:MouseEvent):void {
Alert.show('click!', 'click');
}
Затем я продолжал бы пробовать разные вещи в строке 1, пока не появилось предупреждение.
Надеюсь, это поможет,
- gMale
РЕДАКТИРОВАТЬ: В ответ на ваш комментарий ниже, вот быстрый пример из моей головы вы можете поиграть с вашим клипом и найти кнопку (она может не скомпилироваться, но вы должны понять). Используйте это, только если у вас нет возможности редактировать клип, и если его кнопка на самом деле является fl.controls.Button (в отличие от кнопки MovieClip):
import fl.controls.Button;
var buttonsFound:Integer = 0;
//assume mytiledClip points to your clip that has the button on it
for(var i=0; i < myTiledClip.numChildren; i++) {
var button:Button = myTiledClip.getChildAt(i) as Button;
if(button != null){
Alert.show('Button Found at index:' + i, 'Button Found');
buttonsFound++;
}
}
Alert.show('Number of buttons found: ' + buttonsFound, 'Search Complete');