Avatar billede soelle Nybegynder
14. marts 2005 - 23:43 Der er 36 kommentarer og
1 løsning

sætte visible på flere movieclips

Jeg har en stribe med movieclips som jeg har navngivet med nummer; altså billede1_mc, billede2_mc osv. Nu skal jeg (bl.a.) have lavet en alpha til 0 på alle clips. Kan man ikke gøre det via script istedet for at jeg skal skrive alpha = 0 til alle mc'erne?
Avatar billede mat Nybegynder
14. marts 2005 - 23:49 #1
for (var i = 1; i < antal_clips; i++) {
_root["billede" + i + "_mc"]._alpha = 0;
}
Avatar billede barklund Nybegynder
14. marts 2005 - 23:50 #2
Selvfølgelig kan du loope, blot:

var antal_clips = 15;
for (var i = 0; i < antal_clips; i++) {
    this["billede" + i + "_mc"]._alpha = 0;
}

Derudover, hvis de ikke skal fade men blot skjulet, bør du bruge _visible i stedet.

--
Morten Barklund
Avatar billede barklund Nybegynder
14. marts 2005 - 23:50 #3
mat, velvalgt variabelnavn!!!
Avatar billede barklund Nybegynder
14. marts 2005 - 23:51 #4
(men også lidt scary)
Avatar billede soelle Nybegynder
14. marts 2005 - 23:57 #5
tak... barklund er jo mest detaljeret så der må være point... Det er til fade, så jeg skal bruge alpha.
Avatar billede barklund Nybegynder
14. marts 2005 - 23:59 #6
Hah, at initialisere sine variabler giver point!

Men da mat kom først (og dermed tager æren for de fine variabelnavn) så er det fint med mig, at du kaster dem efter ham :)
Avatar billede soelle Nybegynder
15. marts 2005 - 00:04 #7
Burde dette ikke virke?
on (release) {   
clearInterval(fadeOut);
    function fadeOutBike() {
        var antal_clips = 19;
        for (var i = 0; i<antal_clips; i++) {
            _parent["bike"+i+"_mc"]._alpha -= 5;
            if (_parent["bike"+i+"_mc"]._alpha<=0) {
                clearInterval(fadeOut);
            }
        }
    }
    fadeOut = setInterval(fadeOutBike, 50);
Avatar billede barklund Nybegynder
15. marts 2005 - 00:09 #8
Mjoo, men det er lidt fjollet at lægge "på" en knap - så er scope også så besværligt. Flyt det ud i framen.

Men derudover er der et lille problem med _alpha - den afrundes internt til 100/255 og giver derfor en masse bøvl at bruge.

Derfor bør du bruge en ekstra variabel - for eksempel alpha, som du sætter en gang for alle og sidenhen blot overfører til clips'ne:

var alpha = 0;
var antal_clips = 19;
minknap.onRelease = function() {
    clearInterval(fadeOut);
    alpha = this.bike0_mc._alpha;
    fadeOut = setInterval(fadeOutBike, 50);

function fadeOutBike() {
    alpha -= 5;
    for (var i = 0; i<antal_clips; i++) {
        this["bike"+i+"_mc"]._alpha = alpha;
    }
    if (alpha <= 0) {
        clearInterval(fadeOut);
    }
}

Det burde virke :)

--
Morten Barklund
Avatar billede soelle Nybegynder
15. marts 2005 - 00:18 #9
Ja, der er jo så også et billede skal skal fade op når man klikker på en tilhørende knap. Det skal vel også laves på tilsvarende måde?
Avatar billede soelle Nybegynder
15. marts 2005 - 00:22 #10
hmmm det virker ikke... mit bike_mc ligger i roden, og knappen ligge inde i et mc. Jeg har erstattet this med _parent.
Avatar billede barklund Nybegynder
15. marts 2005 - 00:23 #11
Men er der ikke mange bike_mc'er? Altså bike0_mc, bike1_mc og så videre?
Avatar billede soelle Nybegynder
15. marts 2005 - 00:27 #12
jo, det starter ved bike1_mc og op til 19. Det fungere således: Tryk på en knap, og et billede fader op. Tryk på en anden knap og billedet til den knap fader op og de det andet fader ned.
Avatar billede barklund Nybegynder
15. marts 2005 - 00:30 #13
Altså, blot hvis man trykker på knap1, så fader billede1 op og det billede, der før var fadet op, fader ned igen?
Avatar billede soelle Nybegynder
15. marts 2005 - 00:30 #14
yep!
Avatar billede soelle Nybegynder
15. marts 2005 - 00:31 #15
og årsagen til at knapperne ligger inde i et mc, er at det er scrollbart.
Avatar billede barklund Nybegynder
15. marts 2005 - 00:34 #16
Så er det da fjollet at fade samtlige movieclips ned, når højst et af dem rent faktisk skal fade nogen steder.

Vi laver i stedet en funktion ude i roden, der kan fade et nyt op:

function fade() {
  this._alpha = this.alpha += this.alpha_step;
  if (this.alpha == this.end_alpha) delete this.onEnterFrame;
}
var prev_mc = null;
function fadeMovieclip(mc) {
    if (prev_mc) {
        prev_mc.alpha_step = -5;
        prev_mc.end_alpha = 0;
        prev_mc.onEnterFrame = fade;
    }
    prev_mc = mc;
    mc.alpha_step = 5;
    mc.end_alpha = 100;
    mc.onEnterFrame = fade;
}

Så kalder dine knapper blot:

_root.fadeMovieclip(bike1_mc);

Og ikke andet.
Avatar billede soelle Nybegynder
15. marts 2005 - 00:38 #17
Skal jeg bare paste den som den er ind i en frame eller på bike_mc'erne?
Avatar billede soelle Nybegynder
15. marts 2005 - 00:52 #18
Jeg kan ikke få det til at virke. Jeg må kigge på det igen i morgen.
Avatar billede barklund Nybegynder
15. marts 2005 - 01:10 #19
Du skal bare ligge selve funktionaliteten i roden - og så kalde den fra dine knapper.
Avatar billede soelle Nybegynder
15. marts 2005 - 08:31 #20
Det har jeg gjort. Det virker ikke. Den viser bare alle bike_mc'erne og der sker intet når man trykker.
Avatar billede soelle Nybegynder
15. marts 2005 - 10:57 #21
Nu har jeg fået det til at virke, men nu er problemet at den ikke deleter onEnterframe. Jeg kan via tracen se at den køre i en uendelighed.

function fade() {
  trace(this._alpha)
  this._alpha += this.alpha_step;
if (this.alpha == this.end_alpha) delete this.onEnterFrame;
}
var prev_mc = null;
function fadeMovieclip(mc) {
    if (prev_mc) {
        prev_mc.alpha_step = -5;
        prev_mc.end_alpha = 0;
        prev_mc.onEnterFrame = fade;
    }
    prev_mc = mc;
    mc.alpha_step = 5;
    mc.end_alpha = 100;
    mc.onEnterFrame = fade;
}

Hvis jeg ændrer if (this.alpha == this.end_alpha) delete this.onEnterFrame; til
if (this.alpha >= this.end_alpha) delete this.onEnterFrame;
Så kører den kun 1 step og stopper.
Avatar billede soelle Nybegynder
15. marts 2005 - 12:18 #22
Nu har jeg fået det til at virke med følgende:

function fade() {
this._alpha+=this.alpha_step
this.alpha+=this.alpha_step
trace(this.alpha)
  if (this.alpha == this.end_alpha) delete this.onEnterFrame;}

  var prev_mc = null;
function fadeMovieclip(mc) {
    if (prev_mc) {
        prev_mc.alpha_step = -5;
        prev_mc.end_alpha = 0;
        prev_mc.onEnterFrame = fade;
    }
    prev_mc = mc;
    mc.alpha_step = 5;
    mc.end_alpha = 100;
    mc.alpha=0;
    mc.onEnterFrame = fade;
}

Nu kommer næste problem så... Når man klikker flere gange på samme billede, bliver det fnidret i kanten. Ligesom hvis _alpha er over 100. Og hvis man klikker hurtigt på de forskellige knapper efter hinanden går der også kuk i det.
Avatar billede barklund Nybegynder
15. marts 2005 - 12:49 #23
What? Jeg vil tillade mig at være en smule forvirret over, hvad du vil og prøver dig frem til lige nu. Men jeg kigger på det senere.
Avatar billede soelle Nybegynder
15. marts 2005 - 12:57 #24
Jeg prøver mig lidt frem. Jeg tror dit script gjorde hvad det skulle... det virkede bare ikke. Derfor har jeg prøvet at ændre det for at det skulle virke. Og det gør det nu. Altså delvist. Hvis man trykker på knappen 1 gang fader billede1 op. Trykker man på knap2 fader billede2 op og 1 ud. Præcis som det skal. MEN hvis man trykker hurtigt på henholdvis knap1 og knap 2 efter hinanden går der kuk i fadningen. Jeg kan heller ikke få det til at fungere når jeg smider knapperne ind i et mc, og det skal det ende med.
Avatar billede soelle Nybegynder
15. marts 2005 - 13:02 #25
nu har jeg prøvet med dit script igen. Det virker hvis jeg indsætter en mc.alpha=0; under end_alpha. Nu er problemet så at den fader op fra 0 hvis man klikker på den samme knap flere gange.
Avatar billede soelle Nybegynder
15. marts 2005 - 13:05 #26
og jeg kan stadig ikke få det til at virke når jeg smider knappen ind i et mc.
Avatar billede soelle Nybegynder
15. marts 2005 - 14:30 #27
Nu har jeg fået det til at virke som som du havde tænkt det, tror jeg. Men nu er næste problem så at efterhånden som jeg klikker rundt mellem billederne bliver den mere og mere sløv. Det må jo være fordi alle mc'erne ender med at ligge i _alpha 0 og så bliver tungt for den at fade op, eller hva'?
Avatar billede soelle Nybegynder
15. marts 2005 - 14:37 #28
Dette ser ud til at virke (er det skidt at løse det sådan?)

function fade() {
    this._alpha = this.alpha += this.alpha_step;
    if (this.alpha == this.end_alpha) {
        delete this.onEnterFrame;
    if (this.alpha==0){
        this._visible=0;}
    }
}
var prev_mc = null;
function fadeMovieclip(mc) {
    if (prev_mc) {
        prev_mc.alpha_step = -5;
        prev_mc.end_alpha = 0;
        prev_mc.onEnterFrame = fade;
       
    }
    prev_mc = mc;
    mc.alpha_step = 5;
    mc.end_alpha = 100;
    mc.alpha = 0;
    mc._alpha = 0;
    mc._visible = 1;
    mc.onEnterFrame = fade;
}
Avatar billede barklund Nybegynder
15. marts 2005 - 14:43 #29
Næ, men det meste ser fuldstændig overflødigt ud :)
Avatar billede soelle Nybegynder
15. marts 2005 - 14:55 #30
øhhh hvorfor?
Avatar billede barklund Nybegynder
15. marts 2005 - 15:00 #31
Ja, altså hvis de skal fade ind, så bør de være fadede ud først - og omvendt.

Den kunne nok laves mange gange pænere, hvis nogen helt præcist forstod hvilket udseende, du ville have ud af de forskellige kombinationsmuligheder :)
Avatar billede soelle Nybegynder
15. marts 2005 - 15:14 #32
Jeg har sat _visible=0 på alle clips som udgangspunkt. Udseendet er jo som før beskrevet. Når man klikker på knap1 kommer billede1 osv og det forrige fader ud. Der er 19 knapper og 19 billeder. Det virker fint det du har lavet, men problemet var at det blev mere og mere tungt for den at lave fade efterhånden som man klikkede på de forskellige knapper. Derfor satte jeg visible ind. Men jeg ved ikke om det er en dårlig måde at gøre det på...
Avatar billede soelle Nybegynder
15. marts 2005 - 20:16 #33
Vil du ikke smide et svar så du kan få dine fortjente point?
Avatar billede barklund Nybegynder
15. marts 2005 - 20:31 #34
Jojo :)
Avatar billede soelle Nybegynder
15. marts 2005 - 20:39 #35
Laver du nogle freelance opgaver?
Avatar billede barklund Nybegynder
15. marts 2005 - 21:06 #36
Niks, men du er velkommen til at kontakte min arbejdsgiver ;)

Du kan se mine øvrige aktiviteter på bunden af http://globe.dk/?action=detail&vare=FG227-7 :)

--
Morten Barklund
Avatar billede soelle Nybegynder
15. marts 2005 - 21:13 #37
Jeg har bestilt din bog ... :-)
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