2010-06-11 14 views
0

J'ai lu quelques données d'un fichier XML, tout fonctionne très bien en dehors des URL. Je ne peux pas comprendre quel est le problème avec la fonction « NavigateUrl » ou avec le eventListener ... sur lequel carré je clique ouvre la dernière URL du fichier xmlAS3 URLRequest dans pour le problème de boucle

for(var i:Number = 0; i <= gamesInput.game.length() -1; i++) 
{ 
    var square:square_mc = new square_mc(); 

    //xml values 
    var tGame_name:String = gamesInput.game.name.text()[i];//game name 
    var tGame_id:Number  = gamesInput.children()[i].attributes()[2].toXMLString();//game id 
    var tGame_thumbnail:String = thumbPath + gamesInput.game.thumbnail.text()[i];//thumb path 
    var tGame_url:String  = gamesInput.game.url.text()[i];//game url 

    addChild(square); 
    square.tgname_txt.text = tGame_name; 
    square.tgurl_txt.text = tGame_url; 

    //load & attach game thumb 
    var getThumb:URLRequest = new URLRequest(tGame_thumbnail); 
    var loadThumb:Loader = new Loader(); 
    loadThumb.load(getThumb); 
    square.addChild(loadThumb); 
    // 
    square.y = squareY; 
    square.x = squareX; 
    squareX += square.width + 10; 

    square.buttonMode = true; 
    square.addEventListener(MouseEvent.CLICK, navigateURL); 

} 

function navigateURL(event:MouseEvent):void 
{ 
    var url:URLRequest = new URLRequest(tGame_url); 
    navigateToURL(url, "_blank"); 
    trace(tGame_url); 
} 

Un grand merci!

+0

Je me demandais si vous aviez trouvé le problème? Parce que j'ai le même problème, je ne peux pas accéder à tout enfant ajouté avec la boucle for de l'extérieur. Quelque chose avec un problème de portée? – Benyaman

Répondre

0

On dirait que vous n'attachez pas correctement l'écouteur d'événement. Au lieu de this.addEventListener, attachez-le à la variable que vous avez créée lors de la création de new_mc ..... so:

square.addEventListener (MouseEvent.CLICK, navigateURL);

+0

J'ai essayé comme ça aussi ... Je reçois le même résultat :( – Adrian

0

vous devez ajouter le addEventListener sur les places

mmm..still comment la fonction figurant eventhandler va jamais obtenir le var tgame_url correct.

Que faire si vous essayez ceci:

square.addEventListener(MouseEvent.CLICK, function navigateURL(event:MouseEvent):void 
{ 
    var url:URLRequest = new URLRequest(tGame_url); 
    navigateToURL(url, "_blank"); 
    trace(tGame_url); 
    }); 
+0

l'eventListener est attaché aux carrés et cela fonctionne, mais tous les carrés ont la même url ... – Adrian

+0

Salut, merci beaucoup pour votre réponse, je essayé mais toujours pas de succès – Adrian

1

En NavigateUrl() vous utilisez tGame_url, mais je pense que vous préférez utiliser quelque chose comme tgurl_txt.text qui sera différent pour chaque carré.

+0

Salut, j'ai essayé comme vous l'avez dit, mais je reçois la même chose ... Il obtient toujours la dernière url du xml :(. merci pour votre soutien! – Adrian

0

essayez de tracer ceci:

function navigateURL(event:MouseEvent):void 
{ 
    var url:URLRequest = new URLRequest(tGame_url); 
    navigateToURL(url, "_blank"); 
    //trace(tGame_url); 
    trace(event.currentTarget.tgurl_txt.text); 
} 

vous devez ajouter l'URL à votre place dans la boucle

square.theUrl = tGame_url; 

dans la fonction écouteur d'événement, vous devriez être en mesure d'y accéder avec

event.currentTarget.theUrl;