[Flash/AS] Flash AS3 und XML

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Kamikaze_Raid, 6. März 2011 .

Schlagworte:
  1. 6. März 2011
    Flash AS3 und XML

    Hallo ich bräuchte mal eure Hilfe, ich habe folgendes vor:

    Flash AS3 Datei welche auf eine XML Datei zugreift. In der XML Datei stehen Namen mit dazugehörigen Kennwort. Nun möchte ich das man in Flash ein Abfragefeld kommt in welchen man Namen und Kennwort eingeben kann. Diese Daten sollten mit denen der XML Datei abgefragt werden. Sprich gibt einer Username: user1 und kennwort: kennwort1 ein geht es weiter, oder halt Daten anderer User. Wie realisiere ich dieses einlesen der XML mit dem abfragen der Daten. Es geht hier nicht um Sicherheit, darum dürfen die Daten in XML Dateien stehen. Es geht nur um die Usability. Wär dankbar für AS Code, steht derzeit echt auf dem Schlauch. Bewertung ist sicher!

    Hier ein Auszug der XML Datei, es werden noch weitere User geaddet.

    <users>

    <user>user1</user>
    <kennwort>kennwort1</kennwort>

    <user>user2</user>
    kennwort>kennwort2</kennwort>

    <user>user3</user>
    <kennwort>kennwort3</kennwort>

    </users>



    Vielen dank im Voraus!
     
  2. 12. März 2011
    AW: Flash AS3 und XML

    Anbei eine kleine Klasse, schau mal, ob Dir das hilft.

    PHP:
    package
    {
        
    import flash . events . MouseEvent ;
        
    import flash . display . Sprite ;
        
    import flash . display . StageAlign ;
        
    import flash . display . StageScaleMode ;
        
    import flash . events . Event ;
        
    import flash . events . FocusEvent ;
        
    import flash . events . IOErrorEvent ;
        
    import flash . events . SecurityErrorEvent ;
        
    import flash . net . URLLoader ;
        
    import flash . net . URLRequest ;
        
    import flash . text . TextField ;
        
    import flash . text . TextFieldAutoSize ;
        
    import flash . text . TextFieldType ;
        
    import flash . text . TextFormat ;

        

        
    public class  UserLogin  extends  Sprite
        
    {
            private var 
    _errorMessage  String ;
            private var 
    _username_txt  TextField ;
            private var 
    _kennwort_txt  TextField ;
            private var 
    _status_txt  TextField ;
            private var 
    _yOffset  int  5 ;
            private var 
    _xmlList  XMLList ;

            public function 
    UserLogin ()
            {
                
    stage . align  StageAlign . TOP_LEFT ;
                
    stage . scaleMode  StageScaleMode . NO_SCALE ;
                
    stage . addEventListener ( Event . RESIZE resizeHandler );
                
    stage . dispatchEvent (new  Event ( Event . RESIZE ));
            }

            private function 
    resizeHandler ( event  Event ) :  void
            
    {
                if (
    stage . stageHeight  &&  stage . stageWidth  0 )
                {
                    
    stage . removeEventListener ( Event . RESIZE resizeHandler );

                    var 
    xmlLoader  URLLoader  = new  URLLoader ();
                    
    xmlLoader . addEventListener ( IOErrorEvent . IO_ERROR loadingError );
                    
    xmlLoader . addEventListener ( SecurityErrorEvent . SECURITY_ERROR onSecurityError );
                    
    xmlLoader . addEventListener ( Event . COMPLETE parseXML );
                    
    xmlLoader . load (new  URLRequest ( "users.xml" ));
                }
            }

            private function 
    parseXML ( event  Event ) :  void
            
    {
                var 
    _myXML  XML  = new  XML ( event . target . data );
                
    _myXML . ignoreWhite  true ;
                
    _xmlList  _myXML .. user ;

                
    createTextFields ();
                
    createButton ();
            }

            private function 
    createButton () :  void
            
    {
                var 
    button  Sprite  = new  Sprite ();
                
    button . graphics . beginFill ( 0xFF6600 );
                
    button . graphics . drawRoundRect ( 0 0 75 20 15 );
                
    button . graphics . endFill ();
                
    button . buttonMode  true ;
                
    button . _status_txt . _status_txt . height  _yOffset ;
                
    button . addEventListener ( MouseEvent . CLICK checkLoginData );

                var 
    buttonLabel  TextField  = new  TextField ();
                
    buttonLabel . defaultTextFormat  = new  TextFormat ( "Arial" 12 0xFFFFFF true );
                
    buttonLabel . autoSize  TextFieldAutoSize . LEFT ;
                
    buttonLabel . mouseEnabled  false ;
                
    buttonLabel . selectable  false ;
                
    buttonLabel . text  "Anmelden" ;
                
    buttonLabel . button . width  buttonLabel . width  2 ;

                
    addChild ( button );
                
    button . addChild ( buttonLabel );
            }

            private function 
    checkLoginData ( event  MouseEvent ) :  void
            
    {
                for 
    each  (var  user  XML in _xmlList )
                {
                    if (
    user .@ username  ==  _username_txt . text  &&  user .@ kennwort  ==  _kennwort_txt . text )
                    {
                        
    _status_txt . text  "Daten stimmen überein" ;
                                            
    startApp ();
                    }
                    else
                    {
                        
    _status_txt . text  "Ihre eingegebenen Daten sind inkorrekt" ;
                    }
                }
            }

            private function 
    createTextFields () :  void
            
    {
                
    _username_txt  = new  TextField ();
                
    _username_txt . name  "_username_txt" ;
                
    _username_txt . defaultTextFormat  = new  TextFormat ( "Arial" 12 0x000000 );
                
    _username_txt . width  150 ;
                
    _username_txt . height  20 ;
                
    _username_txt . border  true ;
                
    _username_txt . borderColor  0x666666 ;
                
    _username_txt . text  "Bitte Username eingeben" ;
                
    _username_txt . type  TextFieldType . INPUT ;
                
    _username_txt . addEventListener ( FocusEvent . FOCUS_IN clearTest );
                
    _username_txt . addEventListener ( FocusEvent . FOCUS_OUT checkIfExist );

                
    _kennwort_txt  = new  TextField ();
                
    _kennwort_txt . name  "_kennwort_txt" ;
                
    _kennwort_txt . defaultTextFormat  = new  TextFormat ( "Arial" 12 0x000000 );
                
    _kennwort_txt . width  150 ;
                
    _kennwort_txt . height  20 ;
                
    _kennwort_txt . _username_txt . _username_txt . height  _yOffset ;
                
    _kennwort_txt . border  true ;
                
    _kennwort_txt . borderColor  0x666666 ;
                
    _kennwort_txt . text  "Bitte Kennwort eingeben" ;
                
    _kennwort_txt . background  true ;
                
    _kennwort_txt . backgroundColor  0xCCCCCC ;

                
    _status_txt  = new  TextField ();
                
    _status_txt . name  "_status_txt" ;
                
    _status_txt . defaultTextFormat  = new  TextFormat ( "Arial" 12 0x000000 true );
                
    _status_txt . width  450 ;
                
    _status_txt . height  20 ;
                
    _status_txt . _kennwort_txt . _kennwort_txt . height  _yOffset ;
                
    _status_txt . text  "Bitte geben Sie Ihre Anmeldedaten ein!" ;

                
    addChild ( _username_txt );
                
    addChild ( _kennwort_txt );
                
    addChild ( _status_txt );
            }

            private function 
    checkIfExist ( event  FocusEvent ) :  void
            
    {
                for 
    each  (var  user  XML in _xmlList )
                {
                    if (
    user .@ username  ==  _username_txt . text )
                    {
                        
    _status_txt . text  "Bitte geben Sie Ihr Passwort ein!" ;
                        
    _kennwort_txt . background  false ;
                        
    _kennwort_txt . type  TextFieldType . INPUT ;
                        
    _kennwort_txt . addEventListener ( FocusEvent . FOCUS_IN clearTest );
                        return;
                    }
                    else
                    {
                        if (
    _username_txt . text . length  0 )
                        {
                            
    _kennwort_txt . background  true ;
                            
    _kennwort_txt . type  TextFieldType . DYNAMIC ;
                            
    _kennwort_txt . removeEventListener ( FocusEvent . FOCUS_IN clearTest );
                            
    _status_txt . text  "Der eingegebene User: "  _username_txt . text  " existiert nicht!" ;
                        }
                    }
                }
            }

            private function 
    clearTest ( event  FocusEvent ) :  void
            
    {
                switch(
    event . target . name )
                {
                    case 
    "_username_txt" :
                        
    _username_txt . text  "" ;
                        break;
                    case 
    "_kennwort_txt" :
                        
    _kennwort_txt . text  "" ;
                    default:
                }
            }

            private function 
    startApp () :  void
            
    {
                
    // do Something
            
    }

            private function 
    onSecurityError ( event  SecurityErrorEvent ) :  void
            
    {
                
    _errorMessage  event . text ;
                
    trace ( "SECURITY ERROR! "  _errorMessage );
            }

            private function 
    loadingError ( event  IOErrorEvent ) :  void
            
    {
                
    _errorMessage  event . text ;
                
    trace ( "IO ERROR! "  _errorMessage );
            }
        }
    }

    Die XML Datei habe ich ebenfalls etwas verändert:
    PHP:
      <?xml version = "1.0"  encoding = "utf-8"  ?> 
      <users>
      <user username="user1" kennwort="kennwort1" /> 
      <user username="user2" kennwort="kennwort2" /> 
      <user username="user3" kennwort="kennwort3" /> 
      </users>
    Hoffe das hilt, etwas Feintuning kann notwendig sein.
     
  3. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.