2010-09-01 4 views
1

В следующем примере (да, я кодирую на своей временной шкале, пока я пытаюсь это сделать) Я знаю, я знаю) Я загружаю SWF на HTML-страницу, а затем направляю SWF для получения параметров запроса из текущий URL. Параметр запроса будет содержать источник для воспроизведения видео.Как назначить переменные URLVariables для переменной String?

Это кажется мне прямолинейным, но я не могу получить myURL = urlVars.videoloc; для работы. Более конкретно, urlVars.videoloc выглядит как undefined, а не содержит параметр запроса из URL-адреса. Все остальные переменные правильны; определены как wholeURL, так и urlVars.

//Initialize Global Event Listener 
player.addEventListener(Event.ADDED_TO_STAGE, getPlay, false, 0, true); 

//Function to play the video 
function getPlay(e:Event):void { 
    var wholeURL:String = ExternalInterface.call("window.location.search.toString"); 
    var urlVars:URLVariables = new URLVariables(wholeURL); 
    var myURL:String = urlVars.videoloc; //<--- Trouble, returning 'undefined' 
    errorBox.text = "videoloc="+urlVars.videoloc+"\nwholeURL="+wholeURL+"\nurlVars="+urlVars+"\nmyURL="+myURL; //<--- The reason I know it is returning 'undefined' 

    if (myURL) { 
     player.load(myURL); 
     player.play(); 
    } 
} 

ответ

3

В идеале вы должны использовать отладчик, чтобы проверить состав вашего URLVariables объекта.

Если вы не в состоянии сделать что-то легкий путь, вы могли бы сделать это, чтобы проследить его содержание:

for (var parameter:String in urlVars) { 
    trace(parameter + "=" + urlVars[parameter]); 
} 

Как вы можете видеть, вы можете пройти через каждый параметр внутри urlVars используя for in петлю.

Я предполагаю, что videoLoc - ваш первый параметр? Посмотрите на результаты этого теста шахты:

var address:String = "http://www.google.ca/search?q=test&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-GB:official&client=firefox-a"; 
var urlVars:URLVariables = new URLVariables(address); 

for (var parameter:String in urlVars) { 
    trace(parameter + "=" + urlVars[parameter]); 
} 

Выход этого:

aq=t 
rls=org.mozilla:en-GB:official 
client=firefox-a 
http://www.google.ca/search?q=test 
ie=utf-8 
oe=utf-8

Посмотрите, что случилось с параметром q? Чтобы исправить это, используйте только текст, предшествующий ?

var address:String = "http://www.google.ca/search?q=test&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-GB:official&client=firefox-a"; 
var urlVars:URLVariables 
    = new URLVariables(address.substr(address.indexOf('?')+1)); 

for (var parameter:String in urlVars) { 
    trace(parameter + "=" + urlVars[parameter]); 
} 
+0

Благодарим вас за то, что вы так легко разобрались. Я думал, что мое использование URLVariables было неправильным - я думаю, в какой-то степени это было. Извлечение подстроки после вопросительного знака сделало трюк. Side note - Использование отладчика, но не получило большой удачи в получении полезного результата. Нужно работать над этим. – Structure

Смежные вопросы