Как исправить ошибку 1009 при вызове функции внутри другой функции - PullRequest
0 голосов
/ 17 мая 2019

Я разрабатываю файловый менеджер, который подключается к 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 Ответ

1 голос
/ 17 мая 2019

ОБНОВЛЕНИЕ: я переписал код, и теперь все отлично работает.

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);
        }
    }
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...