Per CheckBox State verändern

FingerSkill

Erfahrenes Mitglied
Hoi,
ich hab folgendes Problem ich weis nicht wie ich bei der Aktivierung einer CheckBox den State umschalten soll.

Habs ursprünglich so abgefangen:
XML:
<mx:CheckBox x="10" y="100" label="I just want to give the following comments." id="option4" click="currentState='Comment'"/>

Aber wenn mann dann die CheckBox wieder deaktiviert bleibt man im State "Comment" also hab ichs so probiert:
XML:
<mx:CheckBox x="10" y="100" label="I just want to give the following comments." id="option4" activate="currentState='Comment'" deactivate="'Form'"/>

Aber so verändern sich die States nicht. Ich kenn mich noch ned wirklich mit Events und EventHandling aus also währs super wenn mir jemand erklären könnt warum das so nicht geht und wie ich das machen muss damits funktioniert.

Gruss Finga
 
Zuletzt bearbeitet von einem Moderator:
Hey,

vielleicht solltest Du den Satz da unten nochmal genau lesen, vielleicht hilft Dir das was.

MfG


Code:
this.option4.setCurrentState(stateName:String, playTransition:Boolen=true)

When you use this property to set a component's state, Flex applies any transition you have defined. You can also use the setCurrentState() method to set the current state; this method can optionally change states without applying a transition.
 
Bin grade draufgekommen das ich activate und deactivate gar ned verwenden kann^^

Bei wechsel des Zustandes der ComboBox (change) wird eine AS Funktion ausgeführt. Nur komm ich halt überhaupt ned dahinter wie ich per AS den currentState ändern kann bzw. abfragen kann welcher State jetzt aktiv ist und dann in den anderen wechsel.

Versuch jetzt seit nem Monat aktiv Flex zu kapieren, hab nen Buch gekauft und durch gelesen, aber irgendwie hab ich noch ned so den durchblick. Hab jetzt auch was von Cairngorm gehört und schon zwei pdf's durch aber das kapier ich halt auch immer nur so ansatzweise. Und unterlagen zu Cairngorm gibts ja überhaupt keine. Naja hoff mir hilft wenigstens bei dem State Problem wer.


Gruss Finga
 
Hey,

den State der Checkbox veränderst du ja nicht oder täuscht mich das !?

War gestern schon etwas müde, heute hab ich es selbst mal probiert, also hier das Ergebnis, bei mir funktioniert's.

Code:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="vertical" 
    creationComplete="afterLoad()" currentState="StartState">
    <mx:states>
        <mx:State name="StartState" id="state1"/>
        <mx:State name="State2" id="state2">
            <mx:SetStyle target="{chkBox1}" name="color" value="#040606"/>
            <mx:SetStyle target="{chkBox1}" name="borderColor" value="#4893C7"/>
            <mx:SetStyle target="{chkBox1}" name="themeColor" value="#90B7D0"/>
            <mx:SetStyle target="{chkBox1}" name="fontFamily" value="Times New Roman"/>
            <mx:SetEventHandler target="{chkBox1}" name="click" handler="setState2();"/>
        </mx:State>
    </mx:states>
    
<mx:Script>
    <![CDATA[

    import mx.states.State;
    import mx.core.UIComponent;
    import mx.controls.Alert;
    
    public function setState():void
    {
        this.setCurrentState("State2", true);
        Alert.show(this.currentState);
    }
    public function setState2():void
    {
        // Foo LOL
    }
    ]]>
</mx:Script>
       <mx:CheckBox x="197" y="76" label="Checkbox" id="chkBox1" styleName="chkBox1" enabled="true" click="setState();" />
    <mx:Style source="styles.css"/>
</mx:Application>
 
Hi,
danke erstmal das du mir hilfst.

Soweit war ich auch schon, das Problem daran ist das bei erneutem clicken auf die CheckBox (deaktivierung) nicht wieder zurück zum letzten State gewechselt wird.

Da ich nicht weis wie ichs in mxml machen sollt wollte ich bei jedem click eine AS Funktion aufrufen die überprüft in welchem State man sich befindet und danach in das andere umschaltet.

Gruss & dank Finga


________________________________EDIT:

So habs aber jetzt geschafft.
So sieht die Funktion aus:
XML:
			private function toComment():void 
			{
				if(this.currentState=="Form")
				{
					this.setCurrentState("Comment", true);
				}
				else
				{
					this.setCurrentState("Form", true);
				}
			}

Gruss Finga
 
Zuletzt bearbeitet von einem Moderator:
HM,


hab deine Funktion grad so übernommen,

funktioniert eigentlich!

Hab auch zwischen public und private gewechselt, das war es auch nicht, bleiben eigentlich nur noch zwei mögliche Ursachen, einmal, im Veränderten State die funktion nochmal mitgeben also so,

Code:
     <mx:states>
        <mx:State name="Form" id="form"/>
        <mx:State name="Comment" id="comment">
            <mx:SetEventHandler target="{chkBox1}" name="click" handler="setState();"/>
        </mx:State>
    </mx:states>
oder die Ursache liegt zwischedrin im Code, also wenn er zwischendrin schon irgendwo hängen bleibt.

ach ja, das Event hatte ich auf "change" nicht click

MfG
 
Zuletzt bearbeitet von einem Moderator:
Bei mir funktionierts ja jetzt eh auch.

Am anfang hab ich mich vertan weil ich dachte das activate und deaktivate für die checkBox sprechen und nicht für die .swf.

Und dann wusste ich nicht wie ichs in Action-Script hinschreiben soll. Change hab ich auch verwendet wollts nur nicht ins Forum posten damit es nicht verwirrt.

Danke & Gruss, Finga
 
Hey,

kein Ding, bin auch noch nicht lange beim "Flexen" xD, aber man kann ja nur dazu lernen :)

schade, dass noch Keiner ein "Hello World" Tutorial verfasst hat :(

oh ich schweife zu sehr ab, freut mich, wenn ich Dir helfen konnte.

MfG
 
Ja ich weis was du meinst.
Ich finds auch ziemlich mühsam mich durch englishe 50 seiten pdfs zu wühlen auf der suche nach lösungen und das ichs endlich ganz kapier^^

Ich hab mir schon öfters überlegt nen Tutorial zu schreiben aber ich glaub um nen ausführliches zu schreiben versteh ichs noch nicht gut genug.
 
Zurück