#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! + Multi-Zitat Zitieren
#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 > 0 && 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 . y = _status_txt . y + _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 . x = button . width / 2 - 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 . y = _username_txt . y + _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 . y = _kennwort_txt . y + _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. + Multi-Zitat Zitieren