2010-06-11 83 views
0

我从一个xml文件读取一些数据,除了urls之外,一切都很好。我想不出有什么问题了“navigateURL”功能或与事件监听......上万我点击它打开了一个网址从XML文件AS3 URLRequest for for循环问题

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

非常感谢!

+0

想知道你是否已经找出问题所在?因为我有同样的问题,我无法访问从外部添加for循环的任何孩子。有范围问题的东西? – Benyaman 2014-04-25 05:19:32

回答

0

看起来你没有正确附加事件监听器。而不是this.addEventListener,将它附加到创建新square_mc时创建的变量.....所以:

square.addEventListener(MouseEvent.CLICK,navigateURL);

+0

我也是这样试过的...我得到了同样的结果:( – Adrian 2010-06-11 23:29:16

0

你应该在广场

mmm..still盘算如何事件处理函数都不会得到正确的tgame_url VAR添加的addEventListener。

如果你试试这个:

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

eventListener它连接到正方形,它的工作原理,但所有的方块都有相同的网址... – Adrian 2010-06-11 23:32:22

+0

嗨,非常感谢你的回答,我尝试,但仍然没有成功 – Adrian 2010-06-12 08:54:29

1

在navigateURL()使用tGame_url,但我认为你宁愿使用类似tgurl_txt.text这将是每平方不同。

+0

嗨,我试着像你说的,但我得到了同样的东西......它总是从XML的最后一个网址:(。谢谢你的支持! – Adrian 2010-06-12 09:00:29

0

尝试跟踪此:

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

你应该在事件侦听器函数循环

square.theUrl = tGame_url; 

的网址添加到您的广场,你应该能够

event.currentTarget.theUrl; 
进行访问