0

我想编写涉及“getURL”的 Actionscript 循环。但是,从我所看到的 getURL 不允许变量名的连接?

我有变量 textholder0、textholder1、textholder2 以电影剪辑名称作为值,link0、link1、link2 以网站地址作为值。

我可以使用 this["textholder" + 0].onRelease 但 getURL("link"+ 0) 给出 "undefined"

textholder0.onRelease = function()
{   
    getURL(link0);
}

textholder1.onRelease = function()
{
    getURL(link1);
}
textholder2.onRelease = function()
{
    getURL(link2);
}

有什么方法可以做到这一点,以便我可以为上述创建一个循环?


这是一个测试。不幸的是,它仍然给我 URL 的“未定义/”。为了简单起见,我创建了三个影片剪辑,实例为 textholder0、textholder1、textholder2。在主时间线上放一个循环。

var links:Array = ["http://www.google.ca", "http://www.google.com", "http://www.google.ru"];

for(var i:Number=0; i<links.length; i++){
    this["textholder" + i].linkURL = links[i];
    this["textholder" + i].onRelease = function() { 
        getURL(linkURL); 
    }    
}

这是调试器窗口的输出

Variable _level0.links = [object #1, class 'Array'] [
    0:"http://www.google.ca",
    1:"http://www.google.com",
    2:"http://www.google.ru"   ] 
Variable _level0.i = 3 
Movie Clip: Target="_level0.textholder0" 
Variable _level0.textholder0.linkURL = "http://www.google.ca" 
Variable _level0.textholder0.onRelease = [function 'onRelease'] 
Movie Clip: Target="_level0.textholder1" 
Variable _level0.textholder1.linkURL = "http://www.google.com" 
Variable _level0.textholder1.onRelease = [function 'onRelease'] 
Movie Clip: Target="_level0.textholder2" 
Variable _level0.textholder2.linkURL = "http://www.google.ru" 
Variable _level0.textholder2.onRelease = [function 'onRelease']

我开始认为您根本不能在循环中使用 onRelease 。

4

2 回答 2

0

getURL("link"+ 0)将尝试转到 URL“link0”,因为"link"+ 0将连接到字符串“link0”,而不是获取link0. 但你可以尝试这样做:

getURL(this["link" + 0]);

括号表示法的区别和机制在于,您可以通过两种方式引用对象的属性 - 使用点表示法,如 this.link0,或括号表示法,this["link0"]。但它必须表示为一个对象属性,只是说"link" + 0任何地方,比如 ingetURL("link"+ 0)不会引用link0.

于 2013-09-01T15:42:27.317 回答
0

好的,所以我认为这里循环的问题是它在单击任何按钮之前增加了“i”变量。

http://www.senocular.com/flash/tutorials/faq/#loopfunctions

Senocular.com 说“你需要定义一个新的、唯一的变量来在函数创建时表示该值,并让函数引用该值”

所以循环如下

var links:Array = ["http://www.google.ca", "http://www.google.com", "http://www.google.ru"];

var curr_button;

for(var i=0; i<=links.length; i++){
    curr_button = this["textholder"+i];
    //note creation of an extra variable "num" below to store the temp number 
    curr_button.num = i;
    curr_button.onRelease = function() { 
        getURL(links[this.num]); 
    }    
}
于 2013-09-05T19:50:23.630 回答