Avatar billede jenz42 Nybegynder
28. februar 2005 - 13:24 Der er 17 kommentarer

Forsinkelse inden gotoAndPlay

Jeg har en knap.
Ved rollover skal filmen tilbage til frame 4, men der skal være en pause på ca. et sekund inden. I det tidsrum skal de øvrige MC's på stagen ikke pauses.


Dvs koden på knappen skal ende med at have følgende struktur:

on (rollOver) {
// delay på et sekund
gotoAndPlay(4);
;
}

Hvordan gør man det?

Venlig hilsen Jens
Avatar billede barklund Nybegynder
28. februar 2005 - 13:33 #1
Ikke særlig optimal struktur, men det kan laves som:

on (rollOver) {
    interval = setInterval(function() {
        clearInterval(interval);
        gotoAndPlay(4);
    }, 1000);
}

--
Morten Barklund
Avatar billede jenz42 Nybegynder
01. marts 2005 - 10:14 #2
Det går desværre i kage. Det ser fint ud i første omgang, men når man så efterfølgende holder musen et andet sted, som får filmen til at vise f.eks. frame 100, skifter den mellem denne frame og frame 4 hvert sekund, selvom det altså ikke har noget med rollover på "frame4"knappen at gøre.

Den går altså i selvsving.

Jeg har et andet sted læst mig til at man kan opnå denne forsinkelse på en lidt anden måde. Nemlig ved at oprette et tomt movieclip med gotoAndPlay(4); i frame 30, og så kalde det med sin rolloverknab. Hvordan skruer man det sammen?

Venlig hilsen Jens
Avatar billede barklund Nybegynder
01. marts 2005 - 10:42 #3
Hm, du skal ikke skrive helt det samme på alle knapper. De kan ikke have samme identifier:


on (rollOver) {
    interval_til_frame_4 = setInterval(function() {
        clearInterval(interval_til_frame_4);
        gotoAndPlay(4);
    }, 1000);
}

Og så et andet navn på de andre knapper.

Men der er jo også andre problemer inde over - så vidt jeg kan se. Hvad hvis man laver rollover på en knap og så to sekunder efter på en anden knap?
Avatar billede jenz42 Nybegynder
01. marts 2005 - 10:46 #4
De andre knapper har ingen forsinkelse eller identifiers.

Jeg kan ikke helt se hvad problemet skulle være med rollover på en anden knab efter 2 sekunder. På det tidspunkt er filmen vel i frame 4 på normal vis, eller hvad?
Avatar billede barklund Nybegynder
01. marts 2005 - 11:25 #5
Jeg troede du havde flere knapper med denne action. Men derudover burde det vel virke som det er - gør det ikke det? Ellers så tilføj en var:

on (rollOver) {
    var interval = setInterval(function() {
        clearInterval(interval);
        gotoAndPlay(4);
    }, 1000);
}

Og se, om det gør en forskel.

Det vil være endnu bedre at lægge det op på framen som en frameaction, der tildeler knappen en rollover event.

--
Morten Barklund
Avatar billede jenz42 Nybegynder
01. marts 2005 - 11:28 #6
Den opfører sig desværre stadig på samme måde.
Avatar billede barklund Nybegynder
01. marts 2005 - 11:57 #7
Fjern funktionen fra din knap, giv den et instance navn og skriv på din frame:

function play4() {
    clearInterval(interval);
    gotoAndPlay(4);
}
function wait4play() {
    interval = setInterval(play4, 1000);
}
min_knap.onRollOver = wait4play;

Og se, om ikke det hjælper.

--
Morten Barklund
Avatar billede jenz42 Nybegynder
01. marts 2005 - 12:13 #8
Så virker det slet ikke. Det har jeg godt nok også undret mig over. Så går den dlet ikke tilbage til frame 4.

Endnu mere underligt, så sættes
min_knap.useHandCursor = false;
som er i den frame ud af kraft og der kommer en hånd ved rollover. Det virkede ellers fint før.

Der sker mystiske ting og sager.

Jeg kan forestille mig at koden isoleret set fungerer, men konflikter med et eller andet ubegribeligt.
Det er derfor jeg tænkte om det ville være smartere at prøve den anden metode.
Avatar billede jenz42 Nybegynder
14. marts 2005 - 10:10 #9
Nu har jeg næsten fået det til at virke med den anden metode.

jeg har lavet et movieclip, som i frame 30 har koden:
_root.gotoAndPlay(4);

Den har jeg så placeret i "over" framen i min knap.

Problemet er nu bare at man skal holde pilen over knappen i hele sekundet, for det virker. Jeg ville meget gerne have at det virker, selvom man laver rollout inden for det sekund.
Avatar billede jenz42 Nybegynder
14. marts 2005 - 10:27 #10
Avatar billede jenz42 Nybegynder
14. marts 2005 - 10:53 #11
OK, nu virker det dæhlme!

Et mc med label "pause_MC" har koden
stop;
i første frame. I frame 30 har det koden
_root.gotoAndPlay(4);

Knappen har koden:
on (rollOver) {
tellTarget ("pause_MC") {
play ();
}
}


Jeg napper selv points, og håber, andre kan få glæde af det.
Avatar billede barklund Nybegynder
14. marts 2005 - 11:19 #12
Det er den en meget uddateret Flash 4/5 agtig metode. Jeg vil på det kraftigste fraråde metoden, og foreslå en mere "moderne" fremgangsmåde.
Avatar billede jenz42 Nybegynder
14. marts 2005 - 11:24 #13
Hvorffor?

Er det da en kode, der ikke virker i fremtidige releases af flash, eller er der en anden god grund?
Avatar billede barklund Nybegynder
14. marts 2005 - 11:57 #14
tellTarget er officielt uddateret siden Flash 5 og frarådes af macromedia. Derudover at bruge frameloops til at lave pause er både uigennemskueligt, unødigt besværligt og overflødigt siden Flash 6 kom til verden. At bruge et simpelt interval er helt klart løsningen.
Avatar billede jenz42 Nybegynder
14. marts 2005 - 12:26 #15
OK. Det er jo godt at vide tak for det.
Avatar billede jenz42 Nybegynder
14. marts 2005 - 12:28 #16
Du har fået et slaw karma for din bonusinformation.

Jeg synes ikke, jeg kan gi' points for koder, jeg ikke får til at virke.
Avatar billede barklund Nybegynder
14. marts 2005 - 12:37 #17
Det er selvfølgelig helt i orden - men som sagt skal jeg ikke lige kunne sige, hvad problemet er. Det kan ligge mange steder - snup bare pointene selv :)
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