mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 28.03.2024 17:33 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
Threadersteller

Dabei seit: 29.06.2002
Ort: Düsseldorf
Alter: 42
Geschlecht: Männlich
Verfasst Sa 21.06.2008 02: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
l'Audiophile

Dabei seit: 16.09.2004
Ort: Berlin
Alter: 43
Geschlecht: Männlich
Verfasst Sa 21.06.2008 12: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 l'Audiophile am Sa 21.06.2008 12:20, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
Sarky
Threadersteller

Dabei seit: 29.06.2002
Ort: Düsseldorf
Alter: 42
Geschlecht: Männlich
Verfasst Sa 21.06.2008 15: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
 
Ähnliche Themen Hintergrundbilder überblenden
[AS3] Von einem MC in anderen überblenden
Suche Flash Freeware zum ÜBERBLENDEN
Falsh video mit div überblenden, der ie verschiebt den div
Flash-Intro auf Startseite überblenden
komisches Dateiformat
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 an Umfragen in diesem Forum nicht mitmachen.