Передать строки для работы в цикле - PullRequest
0 голосов
/ 25 марта 2009

У меня есть этот код, который активируется при опрокидывании, развертывании и отпускании. У меня есть функции для опрокидывания и выкатывания, но функция разблокировки - нет. Я пытаюсь передать некоторые строки с 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);
}

У меня сильное чувство, что url + 1 в цикле for неправильный, но я не знаю, как это сделать.

Есть мысли?

Ответы [ 2 ]

1 голос
/ 25 марта 2009
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]);
}

Убедитесь, что URL-адреса массива содержат не менее 12 элементов, иначе вы получите ошибку индексации за пределами границ.

позже отредактируйте: если вам нужно извлечь URL-адреса из flashvars, просто используйте разделитель, такой как «,» и определите строку со всеми вашими URL-адресами, например: urlVars=url1,url2,url3,...,url12

Затем, чтобы извлечь URL-адреса и вставить их в массив, вы используете функцию разделения:

var urls:Array = new Array();
for (var i=0; i<urlVars.split(",").length; i++) urls.push(urlVars.split(",")[i]);
1 голос
/ 25 марта 2009

Изменить url+1 на this["url"+i]

Это заставит этот код работать. Однако вам действительно следует рассмотреть возможность использования массива url с 12 элементами вместо создания 12 отдельных переменных.

...