Avatar billede checkmeout Nybegynder
10. juni 2003 - 10:34 Der er 14 kommentarer og
2 løsninger

Vise mc udfra variabelværdi

Jeg er en lettere newbie indenfor ActionScript og sidder med hvad jeg mener må være et relativt simpelt spørgsmål:
Hvis jeg har en variabel og ønsker at forskellige movieclip og lyde afspilles afhængig af min variabels værdi; hvordan gør jeg det på en måde der gør min swf-filstørrelse mindst mulig?

Jeg har selv et forslag til grafikken, men ved ikke om det er den bedste metode:

if (koen=="m") {
    tellTarget ("pigen") {
        gotoAndPlay(2);
    }
} else if (koen=="f") {
    tellTarget ("drengen") {
        gotoAndPlay(2);
    }}

"pigen" og "drengen" er movieclip med blanke keyframes i første frame. Er det nok til at de ikke fylder noget i swf-en hvis de ikke bruges?
Jeg har også overvejet at bruge GetProperty med alpha=0 eller noget andet, men er der en løsning hvor jeg slet ikke behøver lægge mit mc på scenen?
Og hvordan gør jeg noget tilsvarende med lyd?
Avatar billede barklund Nybegynder
10. juni 2003 - 10:46 #1
Sættes variablen dynamisk i SWF'en eller statisk i FLA'en når du udvikler?
Avatar billede checkmeout Nybegynder
10. juni 2003 - 10:48 #2
??? øhh det forstår jeg ikke helt. Den sættes udfra et valg som brugeren foretager.
Avatar billede barklund Nybegynder
10. juni 2003 - 10:53 #3
Netop, brugeren kan selv vælge, og derfor er du jo nødt til i din SWF at have BÅDE lyde og movieclip for drenge og piger. Du kan ikke undvære en af tingene, så det er faktisk ligegyldigt hvordan du skjuler den anden.

Du kan lægge det i to selvstændige film og så blot loade den rigtige ind, når brugeren har truffet sit valg.
Avatar billede pyroman Nybegynder
10. juni 2003 - 10:54 #4
Dine løsninger vil begge virke og de vil fylde det samme begge 2. Alt hvad der er i din flash film vil få filmen til at fylde lige meget hvor det er henne i tidslinien.
Hvis du har et flash der er nyere en Flash 4 er det nok smartere at bruge følgende opstilling:

if(koen == "m"){
  pigen.gotoAndPlay(2);
}else if(koen == "f"){
  drengen.gotoAndPlay(2);
}

eller med alpha:

pigen._alpha = 0;
drengen._alpha = 0;
if(koen == "m"){
  pigen._alpha = 100;
}else if(koen == "f"){
  drengen._aplha = 100;
}

Hvis du ikke vil have drengen og pigen til at fylde før man skal bruge dem skal du lave dem som hver deres seperate .swf og hente dem ind med loadMovie...

/Filip
Avatar billede checkmeout Nybegynder
10. juni 2003 - 11:00 #5
OK den løsning med at loade swfer afhængig af valg var I ret enige om, så den er nok den rigtige:) Så det vil jeg gøre. Drop et svar Barklund så kan I dele!
PS: hvordan er det nu man loader en swf ind? Og er det så ikke god skik at putte en loading-bar på efter brugeren har truffet sit valg?
Avatar billede barklund Nybegynder
10. juni 2003 - 11:07 #6
Jo, en preloader ville være en god ide.

Og du loader din swf med:

if (koen == "m") {
  loadMovie("dreng.swf","someMovieclip");
} else if (koen == "f") {
  loadMovie("pige.swf","someMovieclip");
}
Avatar billede barklund Nybegynder
10. juni 2003 - 11:07 #7
*Host*
Avatar billede checkmeout Nybegynder
10. juni 2003 - 11:10 #8
Tak for hjælpen.
/ Brita
Avatar billede pyroman Nybegynder
10. juni 2003 - 11:16 #9
tjo det med preloaderen er ret smart...

du laver de to MC'er igen men uden noget i...

drengen._alpha = 0;
pigen._alpha = 0;
if(koen == "m"){
  pigen.loadMovie("pigen.swf");
}else if(koen == "f"){
  drengen.loadMovie("drengen.swf");
}
pigen.onEnterFrame = function(){
  loadedBytes = this.getBytesLoaded();
  totalBytes = this.getBytesTotal();
  loadedPercent = Math.round(loadedBytes/totalBytes*100);
  if(loadedPercent == 100){
    this._alpha = 100;
  }
}
drengen.onEnterFrame = function(){
  loadedBytes = this.getBytesLoaded();
  totalBytes = this.getBytesTotal();
  loadedPercent = Math.round(loadedBytes/totalBytes*100);
  if(loadedPercent == 100){
    this._alpha = 100;
  }
}
Avatar billede pyroman Nybegynder
10. juni 2003 - 11:17 #10
altid for sent på den... øv, men tak for point - du kan nok godt bruge noget fra min kommentar alligevel...
Avatar billede checkmeout Nybegynder
10. juni 2003 - 11:21 #11
jo i den grad. Mange tak..... jeg prøver det lige af!
Avatar billede checkmeout Nybegynder
10. juni 2003 - 11:40 #12
Hvor ligger jeg hhv:
pigen.onEnterFrame = function(){
  loadedBytes = this.getBytesLoaded();
  totalBytes = this.getBytesTotal();
  loadedPercent = Math.round(loadedBytes/totalBytes*100);
  if(loadedPercent == 100){
    this._alpha = 100;
  }
}

og

drengen.onEnterFrame = function(){
  loadedBytes = this.getBytesLoaded();
  totalBytes = this.getBytesTotal();
  loadedPercent = Math.round(loadedBytes/totalBytes*100);
  if(loadedPercent == 100){
    this._alpha = 100;
  }
}

???
Avatar billede pyroman Nybegynder
10. juni 2003 - 11:47 #13
1. frame i _root... du kan også bare lægge koden på MC'erne og erstatte functionen med:

onClipEvent(enterFrame){....
Avatar billede checkmeout Nybegynder
10. juni 2003 - 11:54 #14
hmmm det er også det jeg har gjort, altså 1.frame i _root, men selvom loadedPercent er 100 viser den ingenting....
Avatar billede pyroman Nybegynder
10. juni 2003 - 11:55 #15
prøv at lægge koden på MC'erne istedet...
Avatar billede checkmeout Nybegynder
10. juni 2003 - 12:11 #16
det lavede en eller anden fejlmeddelse, så i stedet forsøgte jeg at fjerne drengen._alpha = 0;
pigen._alpha = 0;
og så virkede det, hvilket jo er godt, men jeg kunne nu også godt lide ideen med at swf-en først blev vist når den var loaded. Kan det være
this._alpha = 100
det er galt med?
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