mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Sa 30.08.2008 08:58 Benutzername: Passwort: Auto-Login

Thema: [Flex 3] Komisches Verhalten beim Überblenden vom 21.06.2008

Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Multimedia -> [Flex 3] Komisches Verhalten beim Überblenden
Autor Nachricht
Sarky
Moderator
Threadersteller

Dabei seit: 29.06.2002
Ort: Stuttgart
Alter: 26
Geschlecht: Männlich
Verfasst Sa 21.06.2008 03:44
Titel

[Flex 3] Komisches Verhalten beim Überblenden

Antworten mit Zitat Zum Seitenanfang

Hallo zusammen,

Flex treibt mich hier gerade in den Wahnsinn: Ich habe 3 Bilder, und möchte nach einer gewissen Zeit diese parallel ineinander überblenden lassen, immer in der selben Reihenfolge:

1 -> 2 -> 3 -> 1 -> 2 -> 3 -> 1 -> ...

Das funktioniert mit dem Code weiter unten im ersten Zyklus noch gut, doch danach kommt er völlig durcheinander und es schimmern immer wieder andere Bilder durch, die gar nicht zu sehen seien dürften:

So siehts aus

Das ist der Code:

Code:

<?xml version="1.0" encoding="utf-8" ?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    width="865" height="380" styleName="plain"
    layout="absolute"
    creationComplete="init()">
       
    <mx:Script>
        <![CDATA[
            import flash.utils.Timer;
            import flash.events.TimerEvent;
           
            private var imageTimer: Timer;
            private var currentImage: int;
           
            private function init(): void
            {
                currentImage = 1;

                imageTimer = new Timer(4000);
                imageTimer.addEventListener(TimerEvent.TIMER, timerChangeImage);           
                imageTimer.start(); 
            }
           
            private function timerChangeImage(evt: TimerEvent): void
            {
                changeImage(currentImage + 1);
            }
           
            private function changeImage(no: int): void
            {
                if (no > 3)
                {
                    no = 1;
                }
           
                if (no == 1)
                {
                    currentState = 'One';
                }
                else
                if (no == 2)
                {
                    currentState = 'Two';
                }
                else
                if (no == 3)
                {
                    currentState = 'Three';
                }
               
                currentImage = no;
            }
        ]]>
    </mx:Script>
   
    <mx:states>
        <mx:State name="One">
            <mx:SetProperty target="{p1}" name="visible" value="true" />
            <mx:SetProperty target="{p2}" name="visible" value="false" />
            <mx:SetProperty target="{p3}" name="visible" value="false" />
        </mx:State>
        <mx:State name="Two">
            <mx:SetProperty target="{p1}" name="visible" value="false" />
            <mx:SetProperty target="{p2}" name="visible" value="true" />
            <mx:SetProperty target="{p3}" name="visible" value="false" />
        </mx:State>
        <mx:State name="Three">
            <mx:SetProperty target="{p1}" name="visible" value="false" />
            <mx:SetProperty target="{p2}" name="visible" value="false" />
            <mx:SetProperty target="{p3}" name="visible" value="true" />
        </mx:State>
    </mx:states>       
   
    <mx:Parallel id="OneToTwo">
        <mx:Fade target="{p1}" duration="1000" alphaFrom="1.0" alphaTo="0.0"/>   
        <mx:Fade target="{p2}" duration="1000" alphaFrom="0.0" alphaTo="1.0"/>
    </mx:Parallel>
    <mx:Parallel id="TwoToThree">
        <mx:Fade target="{p2}" duration="1000" alphaFrom="1.0" alphaTo="0.0"/>       
        <mx:Fade target="{p3}" duration="1000" alphaFrom="0.0" alphaTo="1.0"/>
    </mx:Parallel>
    <mx:Parallel id="ThreeToOne">
        <mx:Fade target="{p3}" duration="1000" alphaFrom="1.0" alphaTo="0.0"/>       
        <mx:Fade target="{p1}" duration="1000" alphaFrom="0.0" alphaTo="1.0"/>
    </mx:Parallel>
       
    <mx:Canvas>       
        <mx:Canvas id="p1" hideEffect="{OneToTwo}">
            <mx:Image source="@Embed('images/test1.jpg')" />
        </mx:Canvas>

        <mx:Canvas id="p2" hideEffect="{TwoToThree}" visible="false">
            <mx:Image source="@Embed('images/test2.jpg')" />
        </mx:Canvas>

        <mx:Canvas id="p3" hideEffect="{ThreeToOne}" visible="false">
            <mx:Image source="@Embed('images/test3.jpg')" />
        </mx:Canvas>
    </mx:Canvas>
   
</mx:Application>


Wo liegt mein Fehler?

Danke für Eure Hilfe!
  View user's profile Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
pejot

Dabei seit: 16.09.2004
Ort: Das Brighton Deutschlands
Alter: 27
Geschlecht: Männlich
Verfasst Sa 21.06.2008 13:19
Titel

Antworten mit Zitat Zum Seitenanfang

Bin nur kurz drübergeflogen aber ich denke, wenn Methode „changeImage” die „4” als Parameter bekommt und sie dann in „1” umwandelt wird sie bei der nächsten Timerdurchlauf direkt auf „2” gesetzt, ergo existiert die „1” in der Aktion nicht und da kommt die ganze Schose aus dem Tritt. Versuch „changeImage” mal mit ’nem Switch-Case-ablauf zu lösen.
Oder das Ganze über Events lösen, der per Listener jedes mal triggert, wenn sich eine deiner Variablen ändert.

Ich kanns mir aber auch morgen oder Montag mal ausführlich angucken, wenn ich wieder nüchtern bin. *zwinker*


Zuletzt bearbeitet von pejot am Sa 21.06.2008 13:20, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Sarky
Moderator
Threadersteller

Dabei seit: 29.06.2002
Ort: Stuttgart
Alter: 26
Geschlecht: Männlich
Verfasst Sa 21.06.2008 16:05
Titel

Antworten mit Zitat Zum Seitenanfang

Danke pejot, hatte aber nichts mit der changeImage()-Methode zu tun, wie ich inzwischen schmerzlich herausgefunden habe. Es lag am folgenden Teil:

Code:

    <mx:states>
        <mx:State name="One">
            <mx:SetProperty target="{p1}" name="visible" value="true" />
            <mx:SetProperty target="{p2}" name="visible" value="false" />
            <mx:SetProperty target="{p3}" name="visible" value="false" />
        </mx:State>
        <mx:State name="Two">
            <mx:SetProperty target="{p1}" name="visible" value="false" />
            <mx:SetProperty target="{p2}" name="visible" value="true" />
            <mx:SetProperty target="{p3}" name="visible" value="false" />
        </mx:State>
        <mx:State name="Three">
            <mx:SetProperty target="{p1}" name="visible" value="false" />
            <mx:SetProperty target="{p2}" name="visible" value="false" />
            <mx:SetProperty target="{p3}" name="visible" value="true" />
        </mx:State>
    </mx:states>


Der HideEffect eines Objekts wird _immer_ bei einer Zuweisung des visible-Attributs ausgeführt, auch wenn das Objekt bereits unsichtbar ist und ihm erneut visible="false" übergeben wird * Ich geb auf... *
  View user's profile Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
 
Ähnliche Themen Flash-Intro auf Startseite überblenden
DW: Verhalten bei Links
Text mit Verhalten versehen...
Dreamweaver Verhalten on mouse klick
Merkwürdiges Verhalten mit meinen Frames!
Seltsames Verhalten einer Seite im Safari
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Multimedia


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.