Gå til innhold

Stoppe MovieClip med button / Macromedia Flash MX


Anbefalte innlegg

Hei,

 

jeg har laget en film med Macromedia Flash MX der jeg ved hjelp av en knapp henter inn og spiller et movieclip, slik:

 

on (press) {

this.attachMovie("Film", "FilmScene", 1, {_x:-100, _y:-100});

}

 

Så har jeg en annen knapp i hovedfilmen ('root'?) som jeg vil bruke til å stoppe filmen, jeg har prøvd med noe slikt som dette:

 

on (press)

{

_root.FilmScene.stop();

}

 

Når jeg tester filmen (CTRL+Enter) og trykker på den første kanppen spiller filmen, men ingenting skjer når jeg trykker på den andreknappen som skal stoppe filmen.

 

Noen som kan hjelpe?

Lenke til kommentar
Videoannonse
Annonse

Ok, jeg forstå ikke hva som er galt, jeg skriver den nøyaktig samme teksten som i ditt eksempel i en ny film, men det fungerer ikke. Har husket Linkage også. Men ok, jeg bare limer inn det jeg trenger inn i ditt eksempel også fuke det, kanbruke det inntil videre.

 

En annen ting: jeg vil lage en funksjon i første frame i filmen og limer dette inn i Actions for den første frame:

 

function areaOfCircle(radius:Number):Number {

return Math.PI*radius*radius;

}

 

Dette er bare et eksempel tatt fra en tutorial for å få funksjoner til å fungere. Når jeg tester filmen får jeg denne feilmeldingen:

 

Scene=Scene 1, Layer=Layer 1, Frame=1: Line 1: '{' expected

function areaOfCircle(radius:Number):Number {

 

Scene=Scene 1, Layer=Layer 1, Frame=1: Line 3: Unexpected '}' encountered

}

 

Skjønner noen dette? Det er jo to hakeparanteser der!

Lenke til kommentar

Det er bare å bruke filen min hvis det var det du mente.

function areaOfCircle(radius){
trace(Math.PI * radius * radius);
}
my_btn.onPress = function() {
areaOfCircle(15);
};

Vet ikke helt hva du sikter til, men den koden du har skrevet der er rett og slett feil(feilen ligger ikke ved hake-parantesen). La til et eksempel over om hvordan den kan brukes.

 

Angående funksjoner generelt kan jeg gi deg en kort forklaring:

En funksjon er enkel og greit bare en bit kode som kan bli brukt flere ganger i løpet av et program. Funksjoner er en veldig viktig del når du programmerer Action Script - de utfører enkle operasjoner, som å plusse to tall til å laste inn eksterne *.txt filer og CSS (Ja, css og html kan faktisk brukes for å formatere tekst i flash!).

 

For å bruke funksjoner trenger du å kunne i hvert fall dette:

 

Funksjon deklarasjon eller funksjon definisjon

her lager du funksjonen for bruk sener i ditt script

eksempel:

function funksjonNavn(parameter1, parameter2, ...){
 konstatering
}

 

Funksjon påkalling

med dette kaller opp du en funksjon

eksempel:

funksjonNavn(parameter1, parameter2, ...)

Endret av Waldmeister
Lenke til kommentar

Takker for det!

 

Litt mer detaljert om hvordan siden min skal se ut: I hovedfilmen er det et tre knapper som starter hver sin film når de trykkes på. Foran hver film skal det være en liten kjapp snutt som introduserer hver film, denne er lik for hver film.

 

Jeg tenkte jeg kunne gjør dette slik:

 

Når en knapp trykkes spilles introen og en global variabel tillegges en verdi for hvilken film som skal spilles etter introen:

 

on(press){
this.introfilm.play();
_global.filmvariabel = "film1";
}

 

 

I intro-filmen legger jeg inn dette i siste frame:

 

this.filmvariabel.play();

 

Jeg må vel kanskje ha med noe som fjerner intro-filmen etter den er ferdig?

Lenke til kommentar
Jeg må vel kanskje ha med noe som fjerner intro-filmen etter den er ferdig?

 

Ok. Spørsmålet ditt har flere svar, la meg gi deg alternativene.


  1.  
     
  2. Du kan slette MovieClipet når filmen har spilt ferdig. Det gjør du på følgende måte:
    my_mc.removeMovieClip() eller removeMovieClip(my_mc)
     
  3. Eller så kan du fjærne innholdet av et MovieClip:
    my_mc.unloadMovie
     
  4. Eller så kan du vel rett og slett laste inn nye filmer i MovieClipet uten å fjerene noe. Dette vil erstatte innholdet i et MovieClip, men jeg er ikke sikker på om denne metoden er korrekt.
     

Uannsett så er det vel noe ikke problem å lage en liten funksjon som laster inn og fjerner movieclips!

 

Litt mer detaljert om hvordan siden min skal se ut: I hovedfilmen er det et tre knapper som starter hver sin film når de trykkes på. Foran hver film skal det være en liten kjapp snutt som introduserer hver film, denne er lik for hver film.

 

Jeg tenkte jeg kunne gjør dette slik:

 

Når en knapp trykkes spilles introen og en global variabel tillegges en verdi for hvilken film som skal spilles etter introen:

 

on(press){
this.introfilm.play();
_global.filmvariabel = "film1";
}

 

 

I intro-filmen legger jeg inn dette i siste frame:

 

this.filmvariabel.play();

Ja, det er sikkert mulig å gjøre det på denne måten, men la meg fortelle deg om noen bakdeler.

Jeg vet om det er snakk om store filmer, men det kan allikevel dreie seg om noen bytes. Det er derfor dumt at brukeren må laste alle filmene på starten selv om brukeren muligens ikke vil se på alle!

En annen ting er den globale filmvariablen din som også er overflødig.

Her er en mulig løsning:

function newmovie(url) {
loadMovie(url, "FilmScene1");
}
this.my1_btn.onPress = function() {
newmovie("film1.swf");
};
this.my2_btn.onPress = function() {
newmovie("film2.swf");
};
this.my3_btn.onPress = function() {
newmovie("film3.swf");
};

I denne løsningen har du hver film i en egen *.swf fil. Denne *.swf fila bør også inneholde en preloader.

Lenke til kommentar

Takker for hjelpen så langt!

 

Jeg har nå en snutt som spiller av en forfilm ved hjelp av en knapp og på slutten av forfilmen lastes det inn og spilles av en ny film med actionscript i siste frame av forfilmen. Filmen som spilles av bestemmes av en variebel som tilegges verdi i hovedfilmen (filmen som starter når man går til webadressen). Jeg hadde ikke klart det uten god hjelp! :thumbup:

 

Nå til et par layout-spørsmål, hadde vært knall å få svar på dem også!

 

1. Jeg vil at ulik hovedfilm skal lastes ned avhengig av skjermoppløsningen til brukeren. Er det en måte å hente denne parameteren? Jeg vil også at når noen går til hjemmesiden min skal det switches til full screen, bruker jeg da fscommand()?

 

2. Hovedfilmen skal bestå av et bilde, forfilmen fjerner en del av dette og bak hovedfilmen (som gjennom et vindu) vises de enkelte del-filmene ettersom knapper på siden trykkes. Problemet: i Photoshop lager jeg et hull i bildet som skal være hovedfilmen, dette ser fint ut i PS, men når jeg kopierer layeret og paster i MX blir området som er klippet ut hvitt i stedet for gjennomsiktig, er det en måte å ordne dette? Jeg prøver også å bruke lassotool i MX, men straks etter å ha markert forsvinner merkingen, forstår ikke dette. Har prøvd å bruke lasso på graphic og symbol.

 

Forresten, når jeg loader/viser en film, hvordan bestemmer jeg hvilket layer den skal spilles i?

Lenke til kommentar

Her er litt mer hjelp:

  1. Nei, jeg tror dessverre ikke det er mulig å finne skjermoppløsningen til brukeren direkte fra flash player.
    fscommand kan sende informasjon til JavaScript, men ikke motsatt.
    Greier faktisk ikke å komme på en løsning på akkurat dette problemet. Det er absolutt ikke umulig, men det blir nok litt omstendig.
     
     
  2. Bruk fscommand til å skalere det flash playeren hostes i(mest sannsynlig nettleseren).
    fscommand("fullscreen", true);
    fscommand("allowscale", false);

     
  3. La "hullene" dine i PhotoShop være gjennomsiktig.
    Lagre (Save for Web(Ctrl > Shift > s)) PS filen som png med transparant bakgrunn haket av.
    Importer png filen til flash (Ctrl > r).
     
     
  4. Hvis du bruker my_mc.attachMovie(idName, newName, depth [, initObject]) metoden så bestemmer du laget(dybden) med parameteren depth.
    Hvis du vil finne dybden på et eksisterende MovieClip så bruker du my_mc.getDepth();.
    Hvis du vil endre dybden på et eksisterende MovieClip så bruker du my_mc.swapDepth();.

Håper det hjelper litt i hvert fall.

Lenke til kommentar

Kom på en løsning på punkt 1.

Hvis du bruker noe form for Serverside Script som finner skjermoppløsningen til

brukeren og så lagrer det i enten en xml eller txt fil på serveren.

Også henter denne fila inn i flash player ved hjelp av loadVars klassen og til slutt laster inne den passende filmen i Flash Player.

 

Dette blir ganske omstendig, men du kan få det til å fungere!

Et enklere og kaskje bedre forslag er jo å la brukeren bestemme hvordan størrelse på filmen han/hun vil se.

Personlig ville jeg ha valgt den siste metoden.

Endret av Waldmeister
Lenke til kommentar

Fikk transparancy i PS til å funke, konge! Tester levels senere...

 

Angående skjermoppløsning:

 

Jeg vil at hovedbildet som filmen åpner med skal være heldekkende men samtidig i en fast størrelse (i cm) på skjermen. Metoden du nevner i siste innlegg er kanskje vel avansert for mitt nivå, det er mulig jeg nøyer meg med et visst antall piksler for hovedfilmen som skal passe for de fleste skjermoppløsninger og så fyller jeg med sort resten. Det er vel det enkleste :-)

 

t

Lenke til kommentar
Her er litt mer hjelp:

  •  
  • Bruk fscommand til å skalere det flash playeren hostes i(mest sannsynlig nettleseren).
    fscommand("fullscreen", true);
    fscommand("allowscale", false);

     

Det er vel enklest å gjøre det som du sier.

Hvis du legger disse to linjene med script inn i første frame på hovedfilmen din

så vil størrelsen være lik uansett skjermoppløsning og nettleservinduet vil fylle hele skjermbildet.

Men jeg anbefaler deg allikevel å la brukeren bestemme om han/hun vil at hele skjermbildet skal fylles.

Endret av Waldmeister
Lenke til kommentar

Prøvde med

 

fscommand("fullscreen", true);

 

la dette inn i første frame på hovedfilm, men ingenting skjedde når jeg kjørte Publish Preview -> Default, er det en annen innstilling jeg må fikse i tillegg?

 

En annen ting jeg kom på som kunne spare nedlastningstid for den som ser siden: Filmene jeg nevner som skal spilles bak 'vinduet' består av foto som skal fades inn, vises i noen sekunder og så fade ut. Det er kanskje best å lage disse filmene dynamisk med noen .jpg'er i rekkefølge i stedet for å tweene når jeg lager sidene? Ville det vært best å lage en funksjon som laster inn en .jpg og så endrer alphaen til denne (eller filmen den inngår i) slik at det blir en film av det?

Endret av torry
Lenke til kommentar

Du får selvfølgelig se siden når den er ferdig! Jeg har imidlertid ikke 'laget' noe enda, bare sett at en del rutiner jeg trenger virker slik jeg vil ha dem. Nå tok jeg her om dagen noen bilder til siden, har begynt å skru sammen den endelige versjonen nå. Det er en del ting jeg ville ha gjort bedre, men jeg tror det er best å samle sammen og bruke det jeg har nå så ikke oppgaven blir for stor og jeg gir meg.

Endret av torry
Lenke til kommentar

Takker for det!

 

Fikk ikke helt setInterval til å fungere likevel. Er det en funksjon som får hele flash-videoen til å stoppe i et visst tidsintervall? Med setInterval så fortsetter programmet videre, bare at akkurat den funksjonen som kalles med setInterval utsettes.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...