Archief - Android app: Unhandled NetStatusEvent

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

QuietKillah

Legacy Member
Ik had dus al een spel voor op pc in flash, en dit werkt perfect.
nu moet ik nog eens dit spel maken voor android. (ook in flash)
ik begin dus wat te kopieren en met 100 procent dezelfde code
krijg ik een fout bij het inladen van men vragen op de NetConnection.
Iemand enig idee waar het probleem ligt? (project zit in bijlage)

PROJECT KLIK KLIK

Zero Grav

Legacy Member
Uw AMFGateway heet httproot in uw settings.xml, dat is om te beginnen al niet zo logisch.
Zijt ge ten tweede zeker dat de url naar die gateway klopt en dat de service in die amfphp installatie staat? Eens surfen naar de url en dan ook eens de service uittesten in uw amfphpbrowser.

En als laatste staat er geen link naar uw 'assets/xml/settings.xml' in uw bin-debug/html-template mappen (bin-debug 'erft' over van html-template) waardoor ik zelfs niet zeker ben of em in eerste instantie uw settings.xml wel vindt/kan inladen.

QuietKillah

Legacy Member
wel, de gateway en services kloppen allesinds, want ik heb exact dezelfde code in men ander project en daar werkt het wel.
uw laatste zin versta ik nie echt :p

Zero Grav

Legacy Member
'k Was een paar woorden vergeten in die laatste zin die het verschil wel maakten. Aangepast.
En ook al is het exact hetzelfde, can't hurt to try. :) Draait ge dat project trouwens gewoon of via uw localhost? 'k Weet niet zeker of dat een verschil maakt, maar zal wel best via uw localhost zijn.

Zero Grav

Legacy Member
Soit, even een nutteloze opmerking. Waar ge zo 6 eventListeners koppelt aan uw XML_LOADED event kunt ge toch best gewoon even een functie aanmaken waarin ge de dat event opvangt om dan zelf die andere functies te initialiseren.

Maar om verder te gaan, ik zie dat ge wel een faultHandler gekoppeld hebt aan uw calls, dus normaal zou em daar in moeten komen als er daar een fout gebeurt. Kunt ge de exacte error anders eens even tonen en bij welke functie em ze geeft?

QuietKillah

Legacy Member
Code:
Error #2044: Unhandled NetStatusEvent:. level=error, code=NetConnection.Call.Failed
	at be.howest.mm3.app::BlokkenApp/getVragenTvfilm()[C:\Users\Kristof\Desktop\android\be\howest\mm3\app\BlokkenApp.as:137]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at be.howest.mm3.loaders::SettingsLoader/completeHandler()[C:\Users\Kristof\Desktop\android\be\howest\mm3\loaders\SettingsLoader.as:30]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at flash.net::URLLoader/onComplete()
Error #2044: Unhandled NetStatusEvent:. level=error, code=NetConnection.Call.Failed
	at be.howest.mm3.app::BlokkenApp/getVragenTaal()[C:\Users\Kristof\Desktop\android\be\howest\mm3\app\BlokkenApp.as:116]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at be.howest.mm3.loaders::SettingsLoader/completeHandler()[C:\Users\Kristof\Desktop\android\be\howest\mm3\loaders\SettingsLoader.as:30]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at flash.net::URLLoader/onComplete()
Error #2044: Unhandled NetStatusEvent:. level=error, code=NetConnection.Call.Failed
	at be.howest.mm3.app::BlokkenApp/getVragenMuziek()[C:\Users\Kristof\Desktop\android\be\howest\mm3\app\BlokkenApp.as:95]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at be.howest.mm3.loaders::SettingsLoader/completeHandler()[C:\Users\Kristof\Desktop\android\be\howest\mm3\loaders\SettingsLoader.as:30]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at flash.net::URLLoader/onComplete()
Error #2044: Unhandled NetStatusEvent:. level=error, code=NetConnection.Call.Failed
	at be.howest.mm3.app::BlokkenApp/getVragenSport()[C:\Users\Kristof\Desktop\android\be\howest\mm3\app\BlokkenApp.as:74]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at be.howest.mm3.loaders::SettingsLoader/completeHandler()[C:\Users\Kristof\Desktop\android\be\howest\mm3\loaders\SettingsLoader.as:30]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at flash.net::URLLoader/onComplete()
Error #2044: Unhandled NetStatusEvent:. level=error, code=NetConnection.Call.Failed
	at be.howest.mm3.app::BlokkenApp/getVragenAlgemeen()[C:\Users\Kristof\Desktop\android\be\howest\mm3\app\BlokkenApp.as:53]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at be.howest.mm3.loaders::SettingsLoader/completeHandler()[C:\Users\Kristof\Desktop\android\be\howest\mm3\loaders\SettingsLoader.as:30]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at flash.net::URLLoader/onComplete()

normaalgezien is dit dus telkens bij de connection = new NetConnection;

Zero Grav

Legacy Member
En de trace(_settings.httproot); geeft weldegelijk de url door, niet null?
Domme vraag, maar uw server draait toch wel neem ik aan?

Code:
package be.howest.mm3.app
{
    import flash.display.Sprite;
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.net.NetConnection;
    import flash.net.Responder;
    import flash.net.URLRequest;
    //import uk.co.bigroom.tetris.Controller;
    //import uk.co.bigroom.tetris.TetrisEvent;
    import be.howest.mm3.loaders.SettingsLoader;
    import be.howest.mm3.loaders.XMLLoader;
    
    public class BlokkenApp extends MovieClip
    {
        private var start:Start;
        private var _settings:SettingsLoader;
        private var connection:NetConnection;
        private static const SETTINGS_URL:String = "assets/xml/settings.xml";
        private var vragenAlgemeen:Array;
        private var vragenSport:Array;
        private var vragenMuziek:Array;
        private var vragenTaal:Array;
        private var vragenTvfilm:Array;
        private var vragenGeografie:Array;
        private var holder:MovieClip;
        private var goedAntwoord:String;
        
        public function BlokkenApp()
        {
            loadSettings();
            initStage();
        }
        private function initStage():void{
            start = new Start;
            trace("test");
            stage.addChild(start);
        }
        private function loadSettings():void{
            _settings = SettingsLoader.getInstance();
            _settings.load(SETTINGS_URL);
            trace("zie hieronder");
            trace(_settings);
            trace(_settings.httproot);
            _settings.addEventListener(XMLLoader.XML_LOADED,getVragen);
        }
        
        protected function getVragen( e:Event ):void {
            connection = new NetConnection();
            connection.addEventListener( NetStatusEvent.NET_STATUS, netStatusHandler);
            connection.connect( _settings.httproot );

            getVragenAlgemeen();
            getVragenSport();
            getVragenMuziek();
            getVragenTaal();
            getVragenTvfilm();
            getVragenGeografie();
        }
        
        protected function netStatusHandler(e:NetStatusEvent):void {
            trace(e.info.description + '\n' + e.info.details);
        }
        
        /************************************************************************/
        
        private function getVragenAlgemeen():void{
            var resultResponder:Responder = new Responder(vragenAlgemeenResultHandler, faultHandler);
            connection.call("Blokken.getAlgemeen",resultResponder);
        }
        
        private function vragenAlgemeenResultHandler(obj:Object):void{
            //trace("the results: " + obj.serverInfo.initialData);
            var arr:Array = obj.serverInfo.initialData as Array;
            vragenAlgemeen = new Array();
            for each(var item:Object in arr){
                var vraag:Object = new Object;
                vraag.vraag = item[1];
                vraag.antw_goed = item[2];
                vraag.antw2 = item[3];
                vraag.antw3 = item[4];
                vragenAlgemeen.push(vraag);
                //trace(vraag.vraag + ": " + vraag.antw_goed);
            }
            trace("Algemeen ingeladen");
        }
        
        /************************************************************************/

        private function getVragenSport():void{
            var resultResponder:Responder = new Responder(vragenSportResultHandler, faultHandler);
            connection.call("Blokken.getSport",resultResponder);
        }
        
        private function vragenSportResultHandler(obj:Object):void{
            //trace("the results: " + obj.serverInfo.initialData);
            var arr:Array = obj.serverInfo.initialData as Array;
            vragenSport = new Array();
            for each(var item:Object in arr){
                var vraag:Object = new Object;
                vraag.vraag = item[1];
                vraag.antw_goed = item[2];
                vraag.antw2 = item[3];
                vraag.antw3 = item[4];
                vragenSport.push(vraag);
                //trace(vraag.vraag + ": " + vraag.antw_goed);
            }
            trace("Sport ingeladen");
        }

        /************************************************************************/

        private function getVragenMuziek():void{
            var resultResponder:Responder = new Responder(vragenMuziekResultHandler, faultHandler);
            connection.call("Blokken.getMuziek",resultResponder);
        }
        
        private function vragenMuziekResultHandler(obj:Object):void{
            //trace("the results: " + obj.serverInfo.initialData);
            var arr:Array = obj.serverInfo.initialData as Array;
            vragenMuziek = new Array();
            for each(var item:Object in arr){
                var vraag:Object = new Object;
                vraag.vraag = item[1];
                vraag.antw_goed = item[2];
                vraag.antw2 = item[3];
                vraag.antw3 = item[4];
                vragenMuziek.push(vraag);
                //trace(vraag.vraag + ": " + vraag.antw_goed);
            }
            trace("Muziek ingeladen");
        }

        /************************************************************************/
        
        private function getVragenTaal():void{
            var resultResponder:Responder = new Responder(vragenTaalResultHandler, faultHandler);
            connection.call("Blokken.getTaal",resultResponder);
        }
        
        private function vragenTaalResultHandler(obj:Object):void{
            //trace("the results: " + obj.serverInfo.initialData);
            var arr:Array = obj.serverInfo.initialData as Array;
            vragenTaal = new Array();
            for each(var item:Object in arr){
                var vraag:Object = new Object;
                vraag.vraag = item[1];
                vraag.antw_goed = item[2];
                vraag.antw2 = item[3];
                vraag.antw3 = item[4];
                vragenTaal.push(vraag);
                //trace(vraag.vraag + ": " + vraag.antw_goed);
            }
            trace("Taal ingeladen");
        }
        
        /************************************************************************/
        
        private function getVragenTvfilm():void{
            var resultResponder:Responder = new Responder(vragenTvfilmResultHandler, faultHandler);
            connection.call("Blokken.getTvfilm",resultResponder);
        }
        
        private function vragenTvfilmResultHandler(obj:Object):void{
            //trace("the results: " + obj.serverInfo.initialData);
            var arr:Array = obj.serverInfo.initialData as Array;
            vragenTvfilm = new Array();
            for each(var item:Object in arr){
                var vraag:Object = new Object;
                vraag.vraag = item[1];
                vraag.antw_goed = item[2];
                vraag.antw2 = item[3];
                vraag.antw3 = item[4];
                vragenTvfilm.push(vraag);
                //trace(vraag.vraag + ": " + vraag.antw_goed);
            }
            trace("Tv-Film ingeladen");
        }

        /************************************************************************/

        private function getVragenGeografie():void{
            var resultResponder:Responder = new Responder(vragenGeografieResultHandler, faultHandler);
            connection.call("Blokken.getGeografie",resultResponder);
        }

        private function vragenGeografieResultHandler(obj:Object):void{
            //trace("the results: " + obj.serverInfo.initialData);
            var arr:Array = obj.serverInfo.initialData as Array;
            vragenGeografie = new Array();
            for each(var item:Object in arr){
                var vraag:Object = new Object;
                vraag.vraag = item[1];
                vraag.antw_goed = item[2];
                vraag.antw2 = item[3];
                vraag.antw3 = item[4];
                vragenGeografie.push(vraag);
                //trace(vraag.vraag + ": " + vraag.antw_goed);
            }
            trace("Geografie ingeladen");
        }

        private function faultHandler(fault:Object):void{
            trace ("er is een fout: "+fault);
        }
    }
}
Gebruik deze code eens voor uw BlokkenApp klasse. 't Zal snel gevonden zijn.

QuietKillah

Legacy Member
seems to work zonder errors... kwtniet wat er juist verandert is maar blijkbaar goed :p
output:
Code:
zie hieronder
[object SettingsLoader]
undefined
test
Algemeen ingeladen
Sport ingeladen
Muziek ingeladen
Taal ingeladen
Tv-Film ingeladen
Geografie ingeladen

en bedankt :D

Zero Grav

Legacy Member
Koppel uw eventListener van XML_LOADED eens voor ge de effectieve load doet en verplaats die trace(_settings.httproot); naar de getVragen(); klasse. Want op dit moment krijgt ge 'undefined' terug omdat ge em opvraagt voor em is ingeladen.

Code:
        private function loadSettings():void{
            _settings = SettingsLoader.getInstance();
            _settings.addEventListener(XMLLoader.XML_LOADED,getVragen);
            _settings.load(SETTINGS_URL);

            trace(_settings);
            
        }
        
        protected function getVragen( e:Event ):void {
            trace("BlokkenApp :: getVragen :: AMFGateway: " + _settings.httproot);
            
            connection = new NetConnection();
            connection.addEventListener( NetStatusEvent.NET_STATUS, netStatusHandler);
            connection.connect( _settings.httproot );

            getVragenAlgemeen();
            getVragenSport();
            getVragenMuziek();
            getVragenTaal();
            getVragenTvfilm();
            getVragenGeografie();
        }
Zo dus. De reden waarom ik het zeg is omdat ik niets heb veranderd in die mate dat het zou moeten werken, 'k heb gewoon uw netstatusevent opgevangen om te analyseren en uw code wat geherstructureerd. Het enige wat lichtjes veranderd is is misschien de timing van de code en dat zou kunnen betekenen dat er nog ergens een fout zit die in bepaalde gevallen wel kan opduiken.

QuietKillah

Legacy Member
ziet er beter uit precies aan de trace te zien
Code:
[object SettingsLoader]
test
BlokkenApp :: getVragen :: AMFGateway: http://localhost:8080/amfphp/gateway.php
Algemeen ingeladen
Sport ingeladen
Muziek ingeladen
Taal ingeladen
Tv-Film ingeladen
Geografie ingeladen

Zero Grav

Legacy Member
Goh ja, als het werkt.. Kan me inbeelden dat het probleem veroorzaakt werd doordat ge die 6 eventListeners gekoppeld had die telkens dezelfde netConnection gingen overschrijven om een andere call te doen.

Dus wat ik veranderd heb is dat em nu maar één netConnection(); meer aanmaakt en ook maar één EventListener meer gekoppeld aan de XMLLoader. En dan die NetStatusHandler die wordt opgevangen natuurlijk, kunt ge best ergens een visuele error aanhangen voor de gebruiker, maar dat veeg ik meestal ook wel aan mijn broek als het op schoolopdrachten aankomt. :p

QuietKillah

Legacy Member
idd, blijkbaar nu testte ik nog eens mijn site en kreeg plots hetzelfde probleem...
maar kheb dus ook de code daar veranderd en problem solved
dusja bedankt ! :D

QuietKillah

Legacy Member
nog een raar probleem,
nu komen er sommige letters van men vraag en antwoord gewoon niet op?
hij laat gwn af en toe eens een letter weg? :p

zoals hier te zien is
om te tonen dat het niet altijd de eerste letter is maar echt random: KLIK
enig idee hoe dat komt?

EDIT blijkbaar nog niet geembed, silly me :p

nog vraagje, hoe kan ik maken dat de focus direct op het tetris spel ligt, zodat de key's direct werken.
want nu moet ik bij het spel precies telkens klikken in het spel vooraleer ik de keys kan gebruiken

Zero Grav

Legacy Member
Dat is gewoon hoe browsers met flash omgaan. 'k Weet niet of ge daarrond kunt werken.

In theorie zoudt ge iets nodig moeten hebben in de aard van:

Code:
$(window).bind('focus load', function(e) {
				$('#flashContent').focus();
});
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan