Avatar billede msn Nybegynder
16. oktober 2007 - 11:36 Der er 6 kommentarer og
1 løsning

Fade ind og ud ved tryk på menuknap

Jeg er ikke Flash-nørd - arbejder primært på stadiet: on (release) {gotoAndPlay(); osv. Min konkrete udfordring ligger i at jeg har et lille site, hvor jeg ønsker at jeg ved tryk på mine menupunkter, fx "knap A" fader ind på "indhold A". Ved tryk på "knap B" fader jeg ud af "indhold A" og ind i "indhold B" osv. Det fungerer jo fint lineært hvis brugeren klikker sig frem i rækkefølgen a, b, c osv. I det øjeblik man står på "Indhold A" og klikker på "knap C" fader man så ud af "Indhold B" og ind i "indhold C". Det duer ikke. Hvordan er fremgangsmåden hvis man altid vil fade ud af det eksisterede indhold inden man fader ind i det valgte nye indhold?
Avatar billede Slettet bruger
21. oktober 2007 - 01:58 #1
Du har vel lavet det med tweens på timeline?
Hvis du i steder laver hver indholdsside som et MC (MovieClip), kan du lave funktioner til at fade ind og ud.

Sådanne funktioner kunne være:

function fadeIn(targetContent:MovieClip, fadeRate:Number) { // targetContent er MC der fades ind, og fadeRate angiver, hvor hurtigt der fades ind (0-100, jeg vil foreslå 1-10)
    targetContent.onEnterFrame = function() {
        if (this._alpha <= 100-fadeRate) {
            this._alpha += fadeRate; // Forøg synligheden af element der fades ind
        } else {
            delete this.onEnterFrame; // Slet gentagende funktion der forøger synligheden, når MC'et er fundstændig synligt
        }
    }
}
function fadeOut(targetContent:MovieClip, fadeRate:Number) { // targetContent er MC der fades ud, og fadeRate angiver, hvor hurtigt der fades ud (0-100, jeg vil foreslå 1-10)
    targetContent.onEnterFrame = function() {
        if (this._alpha >= fadeRate) {
            this._alpha -= fadeRate; // Formindsk synligheden af element der fades ud
        } else {
            delete this.onEnterFrame; // Slet gentagende funktion der formindsker synligheden, når MC'et er fundstændig usynligt
            // SLÅET FRA - denne linie sletter MC'et helt: targetContent.removeMovieClip(); // Slet MC der fades ud, når det er helt usynligt
        }
    }
}

Disse funktioner kan placeres i _root.
Avatar billede msn Nybegynder
22. oktober 2007 - 16:24 #2
Hej hf2ke, det lyder lige som det jeg har brug for. Jeg skal bare have lidt mere hjælp. Hvordan skal jeg implementere funktionen på mit site, så knapperne aktivere det... Kan jeg maile dig en simpel fla-fil, hvor du kan sætte det ind det rigtige sted. Det er nok det allernemmeste at overskue?
Avatar billede Slettet bruger
22. oktober 2007 - 20:25 #3
Ja, send en mail med fla-filen til hf2ke@sol.dk, så implementerer jeg koden og sætter den endelige udgave ind her også (ellers bliver folk sure :o)).
Avatar billede Slettet bruger
23. oktober 2007 - 11:51 #4
Okay... Har fået det til at virke nu.

[[[ SETUP ]]]

Der er i _root tre MC'er med _alpha sat til 0. Navnene er indholdA, indholdB og indholdC. Desuden er der tre Buttons, også i _root.


[[[ Actions - Frame ]]]

function fadeIn(targetContent:MovieClip, fadeRate:Number) { // targetContent er MC der fades ind, og fadeRate angiver, hvor hurtigt der fades ind (0-100, jeg vil foreslå 1-10)
    targetContent.onEnterFrame = function() {
        if (this._alpha <= 100-fadeRate) {
            this._alpha += fadeRate; // Forøg synligheden af element der fades ind
        } else {
            delete this.onEnterFrame; // Slet gentagende funktion der forøger synligheden, når MC'et er fundstændig synligt
        }
    }
}
function fadeOut(targetContent:MovieClip, fadeRate:Number) { // targetContent er MC der fades ud, og fadeRate angiver, hvor hurtigt der fades ud (0-100, jeg vil foreslå 1-10)
    targetContent.onEnterFrame = function() {
        if (this._alpha >= fadeRate) {
            this._alpha -= fadeRate; // Formindsk synligheden af element der fades ud
        } else {
            delete this.onEnterFrame; // Slet gentagende funktion der formindsker synligheden, når MC'et er fundstændig usynligt
        }
    }
}

var glabalFadeInRate:Number = new Number(10); // Global indstilling til fading
var glabalFadeOutRate:Number = new Number(5); // Endnu en global indstilling til fading

fadeIn(indholdA, glabalFadeInRate); // Start med indholdA


[[[ Actions - Button (første knap) ]]]

on (release) {
    if (indholdA._alpha < 100) {
        fadeIn(indholdA, glabalFadeInRate);
    }
    if (indholdB._alpha > 0) {
        fadeOut(indholdB, glabalFadeOutRate);
    }
    if (indholdC._alpha > 0) {
        fadeOut(indholdC, glabalFadeOutRate);
    }
}


[[[ Actions - Button (anden knap) ]]]

on (release) {
    if (indholdB._alpha < 100) {
        fadeIn(indholdB, glabalFadeInRate);
    }
    if (indholdA._alpha > 0) {
        fadeOut(indholdA, glabalFadeOutRate);
    }
    if (indholdC._alpha > 0) {
        fadeOut(indholdC, glabalFadeOutRate);
    }
}


[[[ Actions - Button (tredje knap) ]]]

on (release) {
    if (indholdC._alpha < 100) {
        fadeIn(indholdC, glabalFadeInRate);
    }
    if (indholdA._alpha > 0) {
        fadeOut(indholdA, glabalFadeOutRate);
    }
    if (indholdB._alpha > 0) {
        fadeOut(indholdB, glabalFadeOutRate);
    }
}
Avatar billede Slettet bruger
23. oktober 2007 - 15:57 #5
Og et lille svar ;)
Avatar billede Slettet bruger
23. oktober 2007 - 15:58 #6
Forresten kan det da gøres endnu lettere.... Lige et sekund.
Avatar billede Slettet bruger
23. oktober 2007 - 16:02 #7
Her =)


[[[ Actions - Frame ]]]

function fadeIn(targetContent:MovieClip, fadeRate:Number) { // targetContent er MC der fades ind, og fadeRate angiver, hvor hurtigt der fades ind (0-100, jeg vil foreslå 1-10)
    if (targetContent._alpha < 100) { // Tjek om MC'et allerede er helt synligt
        targetContent.onEnterFrame = function() {
            if (this._alpha <= 100-fadeRate) {
                this._alpha += fadeRate; // Forøg synligheden af element der fades ind
            } else {
                delete this.onEnterFrame; // Slet gentagende funktion der forøger synligheden, når MC'et er fundstændig synligt
            }
        }
    }
}
function fadeOut(targetContent:MovieClip, fadeRate:Number) { // targetContent er MC der fades ud, og fadeRate angiver, hvor hurtigt der fades ud (0-100, jeg vil foreslå 1-10)
    if (targetContent._alpha > 0) { // Tjek om MC'et allerede er helt usynligt
        targetContent.onEnterFrame = function() {
            if (this._alpha >= fadeRate) {
                this._alpha -= fadeRate; // Formindsk synligheden af element der fades ud
            } else {
                delete this.onEnterFrame; // Slet gentagende funktion der formindsker synligheden, når MC'et er fundstændig usynligt
            }
        }
    }
}

var glabalFadeInRate:Number = new Number(10); // Global indstilling til fading
var glabalFadeOutRate:Number = new Number(5); // Endnu en global indstilling til fading

fadeIn(indholdA, glabalFadeInRate); // Start med indholdA


[[[ Actions - Button (første knap) ]]]

on (release) {
    fadeIn(indholdA, glabalFadeInRate);
    fadeOut(indholdB, glabalFadeOutRate);
    fadeOut(indholdC, glabalFadeOutRate);
}


[[[ Actions - Button (anden knap) ]]]

on (release) {
    fadeIn(indholdB, glabalFadeInRate);
    fadeOut(indholdA, glabalFadeOutRate);
    fadeOut(indholdC, glabalFadeOutRate);
}


[[[ Actions - Button (tredje knap) ]]]

on (release) {
    fadeIn(indholdC, glabalFadeInRate);
    fadeOut(indholdA, glabalFadeOutRate);
    fadeOut(indholdB, glabalFadeOutRate);
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester