Очевидным для вашего кода удаленного взаимодействия является то, что загрузчики загружают данные асинхронно.Это означает, что выполнение программы продолжается, пока загрузчики загружают данные в (практически) другой поток.
Проблема здесь, вы звоните getpath()
сразу после того, как вы начали загрузку.Это делает loadcomplete
false, а функция getpath продолжает повторяться и стек переполняется.
То, что вы ДОЛЖНЫ сделать так:
Позвольте вашему классу отправлять событие.Скажем, вы отправляете только событие Event.COMPLETE
.
Сообщите об этом в IDE следующим образом:
Рядом с объявлением класса добавьте метаданные и сделайте расширение вашего класса EventDispatcher
//Imports and package declaration
[Event(name="complete", type="flash.events.Event")]
public class YourClassName extends EventDispatcher {
//Remaining part of class here
Затем, в вашем loadcompletefun
, добавьте это
dispatchEvent(new Event(Event.COMPLETE));
И, в месте, где вы звоните clickfun
, сделайте это:
o=new YourClassName();
o.addEventListener(Event.COMPLETE, gp);
и объявите gp
как
private function gp(e:Event):void {
trace(getpath());
//You now have the ability to call getpath()
}