Я разрабатываю файловый менеджер, который подключается к FTP-серверам, используя мой собственный класс 'ServConnect'. Я получаю сообщение об ошибке # 1009 при вызове downloadFTPIcon (); функция внутри слушателя myListenerFunctionreq. Фактическая функция (downloadFTPIcon) находится вне функции myListenerFunctionreq. это в том же кадре, что и другая функция.
Я попытался отключить функцию, удалив обязательный параметр String. Я также попытался объединить функции.
function fetchFTPIcon():void { var reqFTP:ServConnect; reqFTP = new ServConnect(curObj._server, curObj._user, curObj._pass, curObj._port); reqFTP.listener = myListenerFunctionreq; ico.gotoAndStop(10); var isError:Boolean = false; function myListenerFunctionreq(e):void { if (e.type == "loginSuccess") { //if(MovieClip(parent).curNetworkDirPath.slice(0,2) == "//") { //trace(String("is double slash "+MovieClip(parent).curNetworkDirPath.slice(1, MovieClip(parent).curNetworkDirPath.length))+"/"+globalNetworkName) //reqFTP.showFile(String(MovieClip(parent).curNetworkDirPath.slice(1, MovieClip(parent).curNetworkDirPath.length))+"/"+globalNetworkName); //} else { //trace(String("no double slash "+MovieClip(parent).curNetworkDirPath.slice(1, MovieClip(parent).curNetworkDirPath.length))+"/"+globalNetworkName) reqFTP.showFile("/ServConnectMeta.xml"); //} } else if (e.type == "error" || e.type == "directoryFaild") { reqFTP.closeWhenReady(); isError = true; ico.gotoAndStop(7); } else if (e.type == "gotFile") { if(!isError) { //fileBA = e.byteArray; //ico.image.loadFromBytes(e.byteArray); reqFTP.closeWhenReady(); var curMetaFile:XML = XML(e.str); if(curMetaFile.hasOwnProperty("icon")) { if(String(curMetaFile.icon).length > 2) { iconLocNetwork = curMetaFile.icon.toString(); downloadFTPIcon(); } else { ico.gotoAndStop(7); } } else { ico.gotoAndStop(7); } } } else if (e.type == "gotFileSize") { trace("GOT FILE SIZE! == "+e.str); } else if (e.type == "progress") { //trace(e.msg); } } } function downloadFTPIcon():void { var reqFTP:ServConnect; ...
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Function/sidebarEntry/fetchFTPIcon/myListenerFunctionreq()[sidebarEntry::frame1:81]
at com.alwinlubbers::ServConnect/_listener()[/Volumes/Bestanden/AlwinLubbers Edit/ServConnect Server/com/alwinlubbers/ServConnect.as:655]
at Function/com.alwinlubbers:ServConnect/private:onReceivedSCmd/com.alwinlubbers:timerDone()[/Volumes/Bestanden/AlwinLubbers Edit/ServConnect Server/com/alwinlubbers/ServConnect.as:187]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
Всего 1 ответ
ОБНОВЛЕНИЕ: я переписал код, и теперь все работает отлично.
function fetchFTPIcon():void {
if(currentlyActive) {
var propFound:Boolean = false;
for (var i:uint; i < MovieClip(root).uploadTasks.length; i++) {
if(Object(MovieClip(root).uploadTasks[i]).displayName == "FTP details "+naam.text+" opvragen...") {
propFound = true;
}
}
if(!propFound) {
var uplTask:Object = new Object();
uplTask.hasPriority = true;
uplTask.displayName = "FTP details "+naam.text+" opvragen...";
uplTask.origin = "fetchFTPIcon";
uplTask.appNaam = "Bestanden";
uplTask.icon = "files";
uplTask.running = true;
MovieClip(root).uploadTasks.push(uplTask);
}
}
if(currentlyActive) {
var reqFTP:ServConnect;
reqFTP = new ServConnect(curObj._server, curObj._user, curObj._pass, curObj._port);
reqFTP.listener = myListenerFunctionreq;
ico.gotoAndStop(10);
}
var isError:Boolean = false;
function myListenerFunctionreq(e):void {
if (e.type == "loginSuccess") {
if(currentlyActive) {
reqFTP.showFile("/ServConnectMeta.xml");
}
} else if (e.type == "gotFile") {
if(currentlyActive) {
reqFTP.closeWhenReady();
trace("got File!!!!!!!!!!!!!! FTP NAME == "+naam.text+" && "+e.str);
var metaXML:XML = XML(e.str);
if(metaXML.hasOwnProperty("icon")) {
if(String(metaXML.icon).length > 3) {
trace("got icon Now downloading!!!!!!!!!!!!!! FTP NAME == "+naam.text);
var icoLoc:String = metaXML.icon;
var icoFTP:ServConnect;
icoFTP = new ServConnect(curObj._server, curObj._user, curObj._pass, curObj._port);
icoFTP.listener = myListenerFunctionreq;
function myListenerFunctionreq(e):void {
if (e.type == "loginSuccess") {
if(currentlyActive) {
icoFTP.showFile(icoLoc);
}
} else if (e.type == "gotFile") {
if(currentlyActive) {
ico.image.loadFromBytes(e.byteArray);
trace("Icon downloaded. Now generating...")
}
} else if (e.code == 550) {
if(currentlyActive) {
ico.gotoAndStop(7);
icoFTP.closeWhenReady();
}
}
}
}
}
}
} else if (e.code == 550) {
if(currentlyActive) {
reqFTP.closeWhenReady();
ico.gotoAndStop(7);
}
}
}
}