AS3 URLRequest для проблемы петли - PullRequest
0 голосов
/ 12 июня 2010

Я читаю некоторые данные из XML-файла, все отлично работает, кроме URL-адресов. Я не могу понять, в чем проблема с функцией "navigateURL" или с eventListener ... на каком квадрате я щелкаю его, открывается последний URL из XML-файла

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);
 }

Большое спасибо!

Ответы [ 4 ]

1 голос
/ 12 июня 2010

В navigateURL () вы используете tGame_url, но я думаю, что вы предпочитаете использовать что-то вроде tgurl_txt.text, которое будет различным для каждого квадрата.

0 голосов
/ 01 июля 2010

попробуйте отследить это:

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

вы должны добавить URL к вашему квадрату в цикле

square.theUrl = tGame_url;

в функции прослушивателя событий, к которой вы сможете получить доступ с помощью

event.currentTarget.theUrl;
0 голосов
/ 12 июня 2010

вы должны добавить addEventListener на квадраты

ммм ... пока вы не поймете, как функция обработчика событий когда-нибудь получит правильный tgame_url var.

Что если вы попробуете это:

 square.addEventListener(MouseEvent.CLICK, function navigateURL(event:MouseEvent):void 
 {  
    var url:URLRequest = new URLRequest(tGame_url); 
     navigateToURL(url, "_blank"); 
    trace(tGame_url); 
  });
0 голосов
/ 12 июня 2010

Похоже, вы не подключили прослушиватель событий должным образом. Вместо this.addEventListener присоедините его к переменной, которую вы создали при создании нового square_mc ..... so:

square.addEventListener (MouseEvent.CLICK, navigateURL);

...