Как изменить функцию JavaScript для ActionScript 3? - PullRequest
0 голосов
/ 01 апреля 2009

Кто-нибудь может мне помочь изменить эту функцию javascript на AS3?

спасибо:)

        function parseURLtoVars(strLocation){
        var rArray = new Array();
        var key;
        var urlString = new String(strLocation);

        if (urlString.search(/\?/)>-1){
            var qArray = urlString.split('?')[1].split('&');

            if (qArray.length > 0){
                for (key in qArray){
                    var arVal = qArray[key].split('=');
                    if (arVal.length ==2){
                        rArray[arVal[0]] = arVal[1];
                    } else {
                        continue;
                    }
                }
                return rArray;
            } else {
                return false;
            }
        }
        return false;
    }

Ответы [ 4 ]

1 голос
/ 01 апреля 2009

Это не совсем то, что вы просили, но в AS 3 я думаю, что есть более простой способ:

import flash.net.URLVariables;

private function parseURLtoVars(strLocation:String):URLVariables {
    strLocation = strLocation.indexOf("?") != -1 ? strLocation.split("?")[1] : strLocation;
    return new URLVariables(strLocation);   
}

И вы можете использовать это так:

var testUrl:String = "test.php?key=value&key2=another_value";
var urlVars:URLVariables = parseURLtoVars(testUrl);

for(var k:String in urlVars) {
    trace(k + " = " + urlVars[k]);
}
1 голос
/ 01 апреля 2009

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

Итак:

function parseURLtoVars(strLocation):Array
{
    var rArray:Array = new Array();
    var urlString:String = new String(strLocation);
    ...
            for(var key:String in qArray) 
        ...
        return rArray;
        } else {
        return null;
        }
    }
    return null;
}

Я установил возвращаемое значение false равным нулю, но вы можете изменить тип возвращаемого значения функции на Object, чтобы вы могли вернуть что-либо из него, но я предположил, что вы хотите, чтобы массив был возвращен.

1 голос
/ 01 апреля 2009

Как насчет

    private function parseURLtoVars(strLocation:String):*
    {
            var rArray:Array = new Array();
            var key:String;
            var urlString:String = new String(strLocation);

            if (urlString.search(/\?/)>-1){
                    var qArray:Array = urlString.split('?')[1].split('&');

                    if (qArray.length > 0){
                            for (key in qArray){
                                var arVal:Array = qArray[key].split('=');
                            if (arVal.length ==2){
                                    rArray[arVal[0]] = arVal[1];
                            } else {
                                    continue;
                            }
                    }
                    return rArray;
                    } else {
                    return false;
                    }
            }
            return false;
    }
1 голос
/ 01 апреля 2009

возвращает params как объект, для возврата логическое значение должно быть простым редактированием.

function getParams(documentRoot):Object
{
 try {
  var params:Object = LoaderInfo(documentRoot.loaderInfo).parameters;
  var pairs:Object = {};
  var key:String;
  for(key in params) {
  pairs.key = String(params.key);
 }
 } catch(e:Error) {
  return {};
 }
  return params;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...