Si je vous comprends bien, il semble que tout ce que vous voulez est une poignée à l'movieclip dans votre TileList et de là , vous voulez ajouter un écouteur d'événement.
Il y a plusieurs façons d'obtenir une poignée à l'intérieur de votre movieClip TileList. Tout d'abord, je dirais que vous devriez utiliser un dataProvider along the lines of the example here. Cela servirait de modèle pour votre objet d'affichage. De là, vous pouvez simplement accéder à votre movieclip désiré à partir de la liste comme dans:
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);
}
Une autre approche (si vous ne pouvez pas travailler avec le fournisseur de données) serait de tenter votre chance avec ce qui suit Méthodes TileList:
getChildAt(index:int):DisplayObject
getChildByName(name:String):DisplayObject
getChildIndex(child:DisplayObject):int
getItemAt(index:uint):Object
et de voir si vous pouvez avoir accès au clip que vous voulez. Si elle était moi, je tester en faisant quelque chose comme:
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');
}
Alors, je continue à essayer différentes choses sur la ligne 1 jusqu'à ce que l'alerte a surgi.
J'espère que cela d'une certaine façon,
--gMale
EDIT: En réponse à votre commentaire ci-dessous, voici un exemple rapide du haut de ma tête vous pourriez jouer avec votre clip et trouver le bouton (il ne peut pas compiler mais vous devriez avoir l'idée). Utilisez ce que si vous ne disposez pas d'une possibilité d'éditer le clip et si le bouton est en fait un fl.controls.Button (par opposition à un bouton 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');
Je suppose que vous avez besoin de cet événement dans la application parente, juste son moteur de rendu? Trop - voulez-vous simuler un clic sur la tuile ou est-ce plus personnalisé? –