0

我有这个代码在翻转、推出和发布时激活。i 用于翻转和推出的功能有效,但释放功能不起作用。我正在尝试将一些带有 url 的字符串传递给循环内的函数。

var url1:String = "http://www.google.com";
var url2:String = "http://www.google.com";
var url3:String = "http://www.google.com";
var url4:String = "http://www.google.com";
var url5:String = "http://www.google.com";
var url6:String = "http://www.google.com";
var url7:String = "http://www.google.com";
var url8:String = "http://www.google.com";
var url9:String = "http://www.google.com";
var url10:String = "http://www.google.com";
var url11:String = "http://www.google.com";
var url12:String = "http://www.google.com";


function SetMouseAction(buttonMC, arrowMC, dynamicTF, linkURL):Void {
    trace(linkURL);
    buttonMC.colorText = dynamicTF;
    buttonMC.onRollOver = function() {
        TweenLite.to(arrowMC,0.5,{_x:"2", _alpha:50, ease:Back.easeOut});
        this.colorText.textColor = 0x7cb0b7;
    };
    buttonMC.onRollOut = function() {
        TweenLite.to(arrowMC,0.5,{_x:37, _alpha:100, ease:Back.easeOut});
        this.colorText.textColor = 0xffffff;
    };
    buttonMC.onRelease = function() {
        if (linkURL) {
            getURL(linkURL);
        }
    };
}

for (var i:Number = 1; i<=12; i++) {
    SetMouseAction(this["link"+i],this["arrow"+i],this["text"+i],url+1);
}

我有一种强烈的感觉,for循环中的url+1是错误的,但我不知道该怎么做。

有什么想法吗?

4

2 回答 2

1

更改url+1this["url"+i]

这将使此代码正常工作。但是,您确实应该考虑使用一个名为 url 的数组,其中包含 12 个元素,而不是创建 12 个单独的变量。

于 2009-03-25T12:52:06.197 回答
1
var urls:Array = new Array();
urls.push("http://link1");
...
urls.push("http://link12");

function SetMouseAction(buttonMC, arrowMC, dynamicTF, linkURL):Void {
...
}

for (var i:Number = 1; i<=12; i++) {
    SetMouseAction(this["link"+i],this["arrow"+i],this["text"+i],urls[i]);
}

确保 Array urls 至少有 12 个元素,否则你会得到一个 index out of bounds 错误。

稍后编辑:如果您需要从 flashvars 中提取 url,只需使用“,”之类的分隔符并使用所有 url 定义一个字符串,如下所示:urlVars=url1,url2,url3,...,url12

然后为了提​​取 url 并将它们推送到数组中,您使用 split 函数:

var urls:Array = new Array();
for (var i=0; i<urlVars.split(",").length; i++) urls.push(urlVars.split(",")[i]);
于 2009-03-25T13:06:06.927 回答