Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-03-2009, 10:13   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2007
Beiträge: 32
Zustandswechsel in MXML

Hallo,
ich habe eine Frage: ich habe Zustande (states) definiert. Bei einem Zustandswechsel blende ich im verlassenden Zustand eine Grafik aus. Das dauert ein paar Sekunden. Der neue Zustand soll erst aktiviert werden, wenn der alte zustand komplett mit dem ausblenden fertig ist. Wie kann ich rausfinden, das der alte Zustand komplett fertig ist??

Gruss Martin
tengelman ist offline   Mit Zitat antworten
Alt 27-03-2009, 11:00   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Du musst mit StateChangeEvents arbeiten.
Omega Psi ist offline   Mit Zitat antworten
Alt 27-03-2009, 13:09   #3 (permalink)
Neuer User
 
Registriert seit: Feb 2007
Beiträge: 32
danke für die schnelle antwort.
das klappt leider nicht, da das Event schon gefeuert wird, auch wenn das Event exitState vom Zustand noch nicht fertig ist:
hier der Code

Code:
<myns:states>
  <mx:State name="statesign50" exitState="{mytarget1.visible = false}">
    <mx:SetProperty target="{mytarget1}" name="visible" value="true"/>
  </mx:State>
<mx:State name="statesign70" exitState="{mytarget2.visible = false}">
  <mx:SetProperty target="{mytarget2}" name="visible" value="true"/>
</mx:State>
</myns:states>

<mx:Fade id="fade" duration="2000"/>
wenn ich den Zustand "statesign50" verlasse und in den Zustand "statesign70" wechsel, wird mytarget1 ausgeblendet und mytarget2 eingeblendet. Erst wenn dieses ausblenden (2 sekunden) fertig ist, möchte ich in den Zustand "statesign70" wechseln.
Wie geht das?
tengelman ist offline   Mit Zitat antworten
Alt 27-03-2009, 13:29   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Ah, ich hab deinen post falsch gelesen. Definier eine Sequence für eine Transistion. Dann passt das.
Omega Psi ist offline   Mit Zitat antworten
Alt 27-03-2009, 13:59   #5 (permalink)
Neuer User
 
Registriert seit: Feb 2007
Beiträge: 32
verstehe es noch nicht ganz:
so klappt es nicht:

Code:
	<myns:states>
		<mx:State name="state1">
			<mx:SetProperty target="{target1}" name="visible" value="true"/>
			<mx:SetProperty target="{target2}" name="visible" value="false"/>
			<mx:SetProperty target="{target3}" name="visible" value="false"/>
		</mx:State>
		<mx:State name="state2">
			<mx:SetProperty target="{target1}" name="visible" value="false"/>
			<mx:SetProperty target="{target2}" name="visible" value="true"/>
			<mx:SetProperty target="{target3}" name="visible" value="false"/>
		</mx:State>
		<mx:State name="state3">
			<mx:SetProperty target="{target1}" name="visible" value="false"/>
			<mx:SetProperty target="{target2}" name="visible" value="false"/>
			<mx:SetProperty target="{target3}" name="visible" value="true"/>
		</mx:State>
	</myns:states>
	
	<myns:transitions>
		<mx:Transition fromState="*" toState="*">
		<mx:Sequence targets="{[target1,target2,target3]}">
 			<mx:Fade duration="2000"/>		
		</mx:Sequence>
 		</mx:Transition>
	</myns:transitions>
Was mach ich da falsch: Ziel ist es: jeweils den eingeblendeten Target ausblenden lassen und beim nächsten Zustand den einen Target wieder einblenden.
tengelman ist offline   Mit Zitat antworten
Alt 27-03-2009, 15:45   #6 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Etwas Code muss es schon sein, damit es vernünftig läuft.
Code:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application layout="vertical"
                initialize="eventListener(event)"
                xmlns:mx="http://www.adobe.com/2006/mxml">
	<mx:Script>
		<![CDATA[
			import mx.events.FlexEvent;
			import mx.messaging.AbstractConsumer;

			private var _stateIndex:int;

			private function eventListener(event:Event):void
			{
				switch(event.type)
				{
					case FlexEvent.INITIALIZE:
					{
						currentState = "state1";
						_stateIndex = 0;
						break;
					}
					case MouseEvent.CLICK:
					{
						if (_stateIndex < states.length-1)
							_stateIndex++;
						else
							_stateIndex = 0;
						currentState = State(states[_stateIndex]).name;
					}
				}
			}
		]]>
	</mx:Script>
	<mx:states>
		<mx:State id="state1" name="state1">
			<mx:SetProperty name="alpha" target="{panel1}" value="0" />
			<mx:AddChild>
				<mx:Panel id="panel1">
					<mx:ControlBar>
						<mx:Button click="eventListener(event)" label="button 1" />
					</mx:ControlBar>
				</mx:Panel>
			</mx:AddChild>
		</mx:State>
		<mx:State id="state2" name="state2">
			<mx:SetProperty name="alpha" target="{panel2}" value="0" />
			<mx:AddChild>
				<mx:Panel id="panel2">
					<mx:ControlBar>
						<mx:Button click="eventListener(event)" label="button 2" />
					</mx:ControlBar>
				</mx:Panel>
			</mx:AddChild>
		</mx:State>
		<mx:State id="state3" name="state3">
			<mx:SetProperty name="alpha" target="{panel3}" value="0" />
			<mx:AddChild>
				<mx:Panel id="panel3">
					<mx:ControlBar>
						<mx:Button click="eventListener(event)" label="button 3" />
					</mx:ControlBar>
				</mx:Panel>
			</mx:AddChild>
		</mx:State>
	</mx:states>
	<mx:transitions>
		<mx:Transition fromState="" toState="state1">
			<mx:Sequence>
				<mx:SetPropertyAction name="alpha" target="{panel1}" value="0" />
				<mx:AddChildAction target="{panel1}" />
				<mx:Fade alphaFrom="0" alphaTo="1" target="{panel1}" />
			</mx:Sequence>
		</mx:Transition>
		<mx:Transition fromState="state1" toState="state2">
			<mx:Sequence targets="{[panel1, panel2]}">
				<mx:Fade alphaFrom="1" alphaTo="0" target="{panel1}" />
				<mx:RemoveChildAction target="{panel1}" />
				<mx:SetPropertyAction name="alpha" target="{panel1}" value="0" />
				<mx:AddChildAction target="{panel2}" />
				<mx:Fade alphaFrom="0" alphaTo="1" target="{panel2}" />
			</mx:Sequence>
		</mx:Transition>
		<mx:Transition fromState="state2" toState="state3">
			<mx:Sequence targets="{[panel2, panel3]}">
				<mx:Fade alphaFrom="1" alphaTo="0" target="{panel2}" />
				<mx:RemoveChildAction target="{panel2}" />
				<mx:SetPropertyAction name="alpha" target="{panel2}" value="0" />
				<mx:AddChildAction target="{panel3}" />
				<mx:Fade alphaFrom="0" alphaTo="1" target="{panel3}" />
			</mx:Sequence>
		</mx:Transition>
		<mx:Transition fromState="state3" toState="state1">
			<mx:Sequence targets="{[panel3, panel1]}">
				<mx:Fade alphaFrom="1" alphaTo="0" target="{panel3}" />
				<mx:RemoveChildAction target="{panel3}" />
				<mx:SetPropertyAction name="alpha" target="{panel1}" value="0" />
				<mx:AddChildAction target="{panel1}" />
				<mx:Fade alphaFrom="0" alphaTo="1" target="{panel1}" />
			</mx:Sequence>
		</mx:Transition>
	</mx:transitions>
</mx:Application>
Omega Psi 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



Alle Zeitangaben in WEZ +1. Es ist jetzt 04:31 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele