Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-11-2011, 20:35   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2011
Beiträge: 2
Unhappy States in einer anderen .mxml festgelegt - wie ändern?

Hallo liebe Nutzer des Flashforums,

ich muss für die "Uni" ein kleines Programm programmieren. Ich hänge leider nur an einem kleinen Punkt, der uns vorgegeben wurde. Im groben geht es um ein Loginpanel, welches nach dem Login auf einen anderen State umschalten soll. Im Grunde genommen, wenn ich mir die Tutorials im Netz so angucke, ganz einfach. Ich habe nur das folgende Problem, dass wir in einer Datei die States festgelegt haben und zwei andere Dateien die States darstellen. Dazu kommt, dass wir eine "ausgelagerte" Customeventklasse schreiben sollten.

Nun zu meinem Problem. Ich bin soweit, dass ich aus dem ersten State heraus das Event feuern kann und es in der CustomEventklasse ein Ereignis auslösen kann... (also z.B. trace("")).

Nun soll aber noch der anderen Klasse mitgeteilt werden, dass dieses Event auch ausgelöst wurde, damit diese in den nächsten State schalten kann. Wie das funktioniert ist mir zwar klar, jedoch weiß ich nicht, wie ich die Methode dafür auslösen soll :(

Ich hänge einfach mal den Code in Einzelteilen dran (ich kann ihn leider nicht in Spoiler setzen also schonmal entschuldigung für die Wall of Text)

LoginPanel.mxml:
...
<fx:Metadata>
[Event(name="login", type="de.beuth.events.CustomEvent")]
</fx:Metadata>
...
<s:Button id="loginButton" x="196" y="178" label="Login" click="dispatchEvent(new CustomEvent('login'))">
<fx:Script>
<![CDATA[
import de.beuth.events.CustomEvent;
]]>
</fx:Script>

</s:Button>
...


Customevent.as
...
public function CustomEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{

super(type, bubbles, cancelable);
trace("antwort");
Alert.show("popup");
...

Flex_Uebung2.mxml
...
<fx:Script>
<![CDATA[
import de.beuth.events.CustomEvent;
import de.beuth.view.*;

this.currentState


public function switchStateByEvent(e:CustomEvent):void{
if(e.isLoggedIn == true){
currentState = 'LoggedInState';
}
else currentState = 'LoginState';
}

]]>
</fx:Script>
<s:states>
<s:State name="LogInState"/>
<s:State name="LoggedInState"/>
</s:states>
<view:LoginPanel includeIn="LogInState" x="0" y="0">
</view:LoginPanel>
<view:MainView includeIn="LoggedInState" x="0" y="0">
</view:MainView>
<view:LoginPanel id="loginPanel" login="CustomEvent(event)">
</view:LoginPanel>
...
Mensle ist offline   Mit Zitat antworten
Alt 14-11-2011, 21:23   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Bremen
Beiträge: 13.370
Ich hab da mal eine Kleinigkeit vorbereitet. Du hast das Event dispatching eventuell noch nicht verstanden
Code:
package org.icodeapps.filters.components.events
{
  import flash.events.Event;

  public class LoginPanelEvent extends Event
  {
    //---------------------------------------------------------------------
    //
    //          Class Constants
    //
    //---------------------------------------------------------------------

    public static const LOGGED_IN:String = 'loggedIn';

    public static const LOGGED_OUT:String = 'loggedOut';

    //---------------------------------------------------------------------
    //
    //          Constructor
    //
    //---------------------------------------------------------------------

    public function LoginPanelEvent(type:String, bubbles:Boolean = true, cancelable:Boolean = false)
    {
      super(type, bubbles, cancelable);
    }

    //---------------------------------------------------------------------
    //
    //          Overridden Methods
    //
    //---------------------------------------------------------------------

    override public function clone():Event
    {
      return new LoginPanelEvent(type, bubbles, cancelable);
    }
  }
}
Code:
<?xml version="1.0"?>
<s:Panel xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
         xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="creationCompleteHandler(event)">

  <fx:Metadata>
    <![CDATA[
    [Event(name="loggedIn", type="org.icodeapps.filters.components.events.LoginPanelEvent")]

    [Event(name="loggedOut", type="org.icodeapps.filters.components.events.LoginPanelEvent")]
    ]]>
  </fx:Metadata>

  <fx:Script>
    <![CDATA[
    import mx.events.FlexEvent;

    import org.icodeapps.filters.components.events.LoginPanelEvent;

    private function creationCompleteHandler(event:FlexEvent):void
    {
      dispatchEvent(new LoginPanelEvent(LoginPanelEvent.LOGGED_IN));
    }
    ]]>
  </fx:Script>

</s:Panel>
Code:
<?xml version="1.0"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
         xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:components="org.icodeapps.filters.components.*">

  <fx:Script>
    <![CDATA[
    import org.icodeapps.filters.components.events.LoginPanelEvent;

    //---------------------------------------------------------------------
    //
    //      Event Handler
    //
    //---------------------------------------------------------------------
    private function loginPanel_loggedInHandler(event:LoginPanelEvent):void
    {
      trace('.loginPanel_loggedInHandler');
    }

    private function loginPanel_loggedOutHandler(event:LoginPanelEvent):void
    {
      trace('.loginPanel_loggedOutHandler');
    }
    ]]>
  </fx:Script>

  <components:LoginPanel id="loginPanel" loggedIn="loginPanel_loggedInHandler(event)"
               loggedOut="loginPanel_loggedOutHandler(event)" />

</s:Group>
Omega Psi ist offline   Mit Zitat antworten
Alt 22-11-2011, 18:11   #3 (permalink)
Neuer User
 
Registriert seit: Nov 2011
Beiträge: 2
Sorry für die späte Antwort - ich hatte die Antwort gleich gelesen aber bis jetzt noch keine Zeit gehabt es auszuprobieren. Und das Resultat: Es funktioniert nun und ich denke ich kann damit arbeiten - vielen vielen Dank
Mensle ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
currenState ausserhalb der MXML ändern neridox Flex programmieren 1 24-05-2011 09:50
simpleButton ändern der states rocknroad ActionScript 3 1 16-12-2009 19:25
Instanziierungsreihenfolge von Objekten innerhalb einer MXML Datei k4simir Flex programmieren 9 02-04-2009 16:23
Kann ein mxml Modul von einer Klasse erben? ullim Flex programmieren 12 18-11-2008 08:57
Random festgelegt? Yenig Flash MX 2004 3 24-03-2005 21:43


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:22 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2014 Marc Thiele