Avatar billede colman Nybegynder
29. januar 2001 - 10:53 Der er 19 kommentarer og
2 løsninger

Variables ??

Jeg har rodet med dette vildt længe.

Jeg har 12 movie-clips p stagen med hver deres instance navn (fra 1-12). Hver film er på 12 frames (et billede tweenes fra alpha 0 til 100 hvorefter jeg lægger en stop action. Herefter tweenes billedet fra 100 til 0). Jeg har 12 knapper på stagen. Når jeg trykker på 1. knap skal 1. film afspille fra frame 0 til  stop action på frame 6. Når jeg så trykker på eks. knap 6 skal 1. film afspille fra frame 6 til slut og 6. film skal afspille fra frame 1 og stoppe ved frame 6(stop action). Kan i begynde at se mit problem?? Der er 12 forskellige film. Når jeg eks. trykker på 10. film skal jeg vide hvilken film der er blevet afspillet og er stoppet på frame 6... Jeg har prøvet med if/else sætninger, men de fylder så meget i koden at filmes afvikles langsomt. Please help me!!! Jeg giver også gerne flere point - bare hjælp mig!
Avatar billede redbastard Nybegynder
29. januar 2001 - 10:56 #1
det var måske en ide at have dine movieclip i een frame
også bruge \"goto and stop\" i pågældende frame
Avatar billede diktator Nybegynder
29. januar 2001 - 11:11 #2
Hej -det her er ikke afprøvet, men det er noget i den stil du skal have fat på.

Hvis der er loaded en film, tildeles den variable \'FilmLoaded\' svarende til det nummer din film har. Derefter tjekkes der om der allerede er en film Loaded. Hvis det er tilfældet afspilles frame nr. 6 i pågældende film. Til sidst tildeles Variablen \'FilmUnload\' variablen \'FilmLoaded\' så den er klar til blive afviklet næste gang.... -kan du følge mig ?


on (release) {
    loadMovieNum (\"film2.swf\", 2);
    FilmLoaded = \"2\";
}
on (release) {
    if (FilmUnload ne \"\") {
        tellTarget (\"_root.film\"(Number(FilmUnload))) {
            gotoAndPlay (6);
        }
    }
}
on (release) {
    FilmUnload = FilmLoaded;
}
Avatar billede hoejrup Nybegynder
29. januar 2001 - 11:12 #3
Du kan sagtens lave 12 film og styre det med if/else sætninger. men performance af hænger hvor du skriver dit ActionScript.
Det er en af de store problemer, som mange Flash programmører har i dag.

Der er nemlig 4 muligheder:

1. Du kan lave et layer der kaldes Action i hoved filmen med ActionScript i de enkelte frames.
2. Du laver en movie med labels indeholdende ActionScript.
3. ActionScript i de enkelte film.
4. ActionScript på en knap.

/Per
Avatar billede colman Nybegynder
29. januar 2001 - 11:51 #4
Tak for tippet diktator!!
Det ligner noget af det jeg er ude efter...
Jeg vil lige prøve og se om det virker. Din metode krever dog at disse movieclips skal loades ind. Har jeg ret?? Det øverste du skriver er at film2.swf skal loades ind på level 2 - den er jeg med på.

Det script du skriver i midten er en gåde for mig!
Gidder du forklare nærmere ?!?
Avatar billede hoejrup Nybegynder
29. januar 2001 - 12:07 #5
coleman>

Du behøver ikke loade en film for at få en god performance, du kan nøjes med at bruge tellTarget. Samtidig kan du bruge globale variabler til at undersøge, hvilken film der har været aktiv sidst.

En del af diktator kommandoer findes overhovedet ikke i Flash 5.0. Jeg har arbejdet med flash i 10 måneder, og har lavet flere spil i programmet. Så jeg kender flash rimelig godt.

/per
Avatar billede diktator Nybegynder
29. januar 2001 - 12:25 #6
Scriptet i midten tjekker om variable \'FilmUnload\' er tom.
ne = Not Equal
Hvis det ikke er tom eksekveres scriptet og ved hjælp af  \'FilmUnload = FilmLoaded\' kan jeg nu TellTarget til sidst loaded film.

Det kan godt være at TellTarget skal ændres til:


on (release) {
    if (FilmUnload ne \"\") {
        GoTo = \"_root.film\"(Number(FilmUnload));
        tellTarget (GoTo) {
            gotoAndPlay (6);
        }
    }
}

Jeg ved ikke hvilke kommandoer  hoejrup  hentyder til ikke findes i Flash!? Men det kan være at han vil uddybe det.....?
Avatar billede colman Nybegynder
29. januar 2001 - 12:27 #7
Jeg har fået det til at virke når jeg lægge al scriptene i hver enkelt knap, men som du siger så tærrer det på min performance. Jeg har 12 if/else cases på hver knap + lidt mere. Hvordan kan jeg så finde ud af hvilken film der sidst er blevet afspillet. (Som det er nu benytter jeg tellTarget, hvor hver film har et instance navn...)

HELP!!
Avatar billede diktator Nybegynder
29. januar 2001 - 12:43 #8

Den sidst spillede film får variable; \'FilmUnload\' som svarer til dit instance navn på den sidst afspillede film.

I mit eksempel hedder en film f.eks:
film2.swf, den giver du instance navn= film2
Min Goto variable sætter det sidst afspillede instance navn til:
GoTo = \"_root.film\"(Number(FilmUnload));

Som svarer til:
GoTo = \"_root.film2\"

Mit TellTarget bliver så:
tellTarget (GoTo) {
            gotoAndPlay (6);
        }

Så afspilles film2 i 6 frame...

Derefter får variable FilmUnload tildelt et nyt instance navn, nemlig fra den film du nu loader ind.

FilmUnload = FilmLoaded



Avatar billede hoejrup Nybegynder
29. januar 2001 - 12:53 #9
De 12 if/else case kan du komme ind i et movie klip, så skal du kun lave dem en gang. Så laver du et kald til funktionen i movie klippet. Derefter laver du et layer på hoved movien, hvor du trækker movien ud på. Derefter tildeler du instance navnet på movien.

Hvert moviklip får en variabel med en værdi,

Movie 1 variabel  _root.film = 1
Movie 2 variabel _root.film = 2
mv.

Så kan du se hvilken movie der har været aktiv sidst.

Den film der skal kører fra frame 0 til slut skal ikke have en variabel.

/per
Avatar billede colman Nybegynder
29. januar 2001 - 13:11 #10
hoejrup ==> Din metode virker men jeg har fundet ud af at det ikke er koden der sætter performance ned men der er moviecilippene...når jeg prøver med 2-3 clips virker det fint også hastigheds mæssigt. Jeg skal prøve med den måde diktator siger.

diktator ==>

Kan du ikke skrive en sammenhængende kode. Hvilken kode skal lægges på hvilken knap...osv. Jeg har prøvet på den måde du har skrevet, men jeg kan ikke få det til at funke... hvad mener du med _root.film ?? Skriv en lidt mere detaljeret og præsis gennemgang og pointene er dine !!
Avatar billede diktator Nybegynder
29. januar 2001 - 13:14 #11
Hvilken Flash version skal det skrives til?
Avatar billede colman Nybegynder
29. januar 2001 - 13:22 #12
diktator ==>
Til flash 4 tak...du har reddet min dag hvis du kan hjælpe mig..jeg har rodet med det de sidste par dage !!! (Hvis du har tid må du også gerne skrive det til Flash 5)

På forhånd mange mange mange TAK!!!
Avatar billede diktator Nybegynder
29. januar 2001 - 14:54 #13
Følgende er script til knap 1 der starter MC film1 i første frame.

Derudover tjekker den om der har været loaded et foregående MC. Hvis der har været et MC før film, har variable \'FilmUnload\' værdien af denne og der laves et TellTarget til frame 6.

Derefter får variable \'FilmUnload\' en ny værdi, nemlig den der lige er loaded;

FilmLoaded = \"1\";
FilmUnload = FilmLoaded;

Så vil det være Film1 der bliver den næste i rækken, der ryger til frame 6.

Dette eks. refererer til MC, der allerede eksisterer i hovedfilmen og har fået tildelt instance names; Film1, Film2, Film3 etc.
–du kan selv tilpasse scriptet hvis du ønsker at loade nye film udefra din hovedmovie og tildele dem instance names. Jeg ved ikke hvad det skal bruges til så derfor kan jeg heller ikke sige hvad der er mest hensigtsmæssigt....

Dine efterfølgende knapper skal  selvfølgelig have samme action, hvor du lige ændrer  tellTarget (\"film1\") og FilmLoaded = \"1\"; til de rigtige værdier....

on (release) {
    tellTarget (\"film1\") {
        gotoAndStop (1);
    }
    FilmLoaded = \"1\";
    if (FilmUnload ne \"\") {
        Goto = \"film\" add Number(FilmUnload);
        tellTarget (GoTo) {
            gotoAndPlay (6);
        }
    }
    FilmUnload = FilmLoaded;
}


Det kan sikkert laves på mange andre måder, nogle måske smartere end det jeg foreslår, men det kan være lidt svært at bedømme når man ikke selv sider med fla\'en :-)
Avatar billede Slettet bruger
30. juni 2002 - 21:44 #14
Hmmm... Jeg tænder lige op i en gammel tråd som egentligt ikke har noget med spørgsmålet af gøre. Jeg syntes at ovenstående kode har fået en anden syntax end den oprindelige postede kode.

På min Pc'er ser det ud som om at alle semikolon har fået et backslash foran sig, og derfor vil jeg lige afprøve min tvivl om et evt. bug her på siden.

Semikolon uden backslash:
"

2 semikolon uden backslash ""

Backslash og semikolon:
\"

Ref: http://www.flashfaq.dk/spg.asp?ID=163

Mvh, Michael
Avatar billede Slettet bruger
30. juni 2002 - 21:47 #15
Det virkede sq fint ??
Er det mig der er ved at blive skør ....? :D
Avatar billede nikolajdu Nybegynder
02. juli 2002 - 10:38 #16
ER det ekspertens tagster du tænker på her - eller hvad? Tror jeg skal have skåret det ud i pap - Er simpelthen lige vågnet :))
Avatar billede nikolajdu Nybegynder
02. juli 2002 - 10:44 #17
if(_name == "orgMC"){
    _parent.createGrid();
  }

if (_name == "orgMC") {
    _parent.createGrid();
}
Avatar billede Slettet bruger
02. juli 2002 - 10:44 #18
Prøv at lægge mærke til al koden på denne side.

on (release) {
    tellTarget (\"film1\") {
        gotoAndStop (1);
    }
    FilmLoaded = \"1\";
    if (FilmUnload ne \"\") {
        Goto = \"film\" add Number(FilmUnload);
        tellTarget (GoTo) {
            gotoAndPlay (6);
        }
    }
    FilmUnload = FilmLoaded;
}

Den burde se sådan ud:
on (release) {
    tellTarget ("film1") {
        gotoAndStop (1);
    }
    FilmLoaded = "1";
    if (FilmUnload ne "") {
        Goto = "film" add Number(FilmUnload);
        tellTarget (GoTo) {
            gotoAndPlay (6);
        }
    }
    FilmUnload = FilmLoaded;
}

Altså alle steder hvor der står " (semikolon) er der tilføjet et \ (backslash) foran ?? - Og det forekommer også i andre spørgsmål.
Avatar billede nikolajdu Nybegynder
02. juli 2002 - 10:46 #19
" er da ikke et semikolon, men et anførselstegn??

hmmm umiddelerbart virkede min lille test her jo fint?? Det kan være fejlen er rettet?
Avatar billede Slettet bruger
02. juli 2002 - 10:48 #20
Anførselstegn selvfølgelig - lussing til mig selv :)

Se evt:
http://www.eksperten.dk/spm/155033
Avatar billede nikolajdu Nybegynder
02. juli 2002 - 10:51 #21
Jeg kan godt se at problemet har været der tidligere, men det ser jo ikke ud til at det er der længere?
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

IT-JOB