webForumDet fria alternativet

Svepeffekt med byte av bild

Flash

2 svar · 313 visningar · startad av carlpepper

Medlem sedan feb. 20072 inlägg
Frågan#1

Jag ska försöka förklara det här så gott jag kan:

Mitt flashdokument ska motsvara en slideshow, där två bilder byts ut samtidigt (som i en bok), när man klickar på next respektive previous.

I samband med att bilderna byts vill jag ha en svepeffekt på respektive bild (1A och 1B byts till 2A och 2B), dvs en shapetweenad linje i bakgrundsfärgen som sveper över bilden, och när det är "utsuddat" ska bilden bytas och komma fram med "tillbakasvepet".

Jag antar att det lättaste är att göra ett movie clip för själva svepet, så har jag i alla fall börjat, och det har jag egentligen inte problem med.

Frågan är:

Hur ska jag "kalla" på det här svep-klippet varenda gång man klickar på next eller previous, och därefter se till att själva bytet av bilder sker när allt är dolt (dvs, när svepet är maximalt)?

Här e förklaringen lite mer visuellt:
Bild 1A, Bild 1B
Previous, Next

När jag klickar på Next skall Movieclip A (svepeffekt in, ca 30 frames) aktiveras. Därefter skall bild 1A och bild 1B bytas till 2A och 2B. Sist skall Movieclip B (svepeffekt ut) köras och "avslöja" de nya bilderna.

Uppskattar hjälp!
MVH,
Carl

Medlem sedan nov. 2004149 inlägg
#2

Hej,
jag tror att jag har gjort något som liknar effekten du är ute efter. Titta på http://www.teaterlederman.com för att se hur det hela uppför sig. Klicka på "Titta på lokalerna" i menyn. Skillnaden är att jag använt mig av en zoomeffekt istället för svep. Men svep går naturligtvis lika bra.

Du är på rätt spår - du ska skapa ett movieclip som innehåller svepet.

Jag har gjort så här:

Jag har i huvudswf:en två tomma movieclips som heter holder1 och holder2.
I början av huvudswf:en har jag följande script:

_global.depth = 1;

_global.depthSwap = function() {
_root.holder1.swapDepths(_root.holder2);
if (depth == 1) {
_global.depth = 2;
} else {
_global.depth = 1;
}
unloadMovie("_root.holder"+depth);
};

Ovanstående script ser till att holdern med den inladdade swf:en alltid hamnar underst. Nya swf:er laddas alltid till den holder som ligger överst. Holder1 och holder2 byter alltså plats varje gång en bild laddats.

Vidare har jag i huvudswf:en ett movieclip som heter zoom (motsvarar alltså ditt svep).

Varje gång en ny bild klickas fram aktiveras följande script:

on (release) {
_global.movienr = 5;
loadMovie("bild"+movienr+".swf", "_root.holder"+depth);
}

I varje swf som laddas av ovanstående script finns på lämpligt ställe scriptet:

_root.zoom.play(); //aktiverar alltså det som i ditt fall ska vara ett svep

Och några frames senare kallar jag på funktionen som jag definierade i min huvudswf:

depthSwap();

Det hela funkar smidigt och utan problem. Har använt detta på ett flertal sajter.

/Alar

Medlem sedan feb. 20072 inlägg
#3

Härligt, detta innebär alltså i princip att jag kan göra en vanlig enkel slideshow som huvud-.swf, och sedan bara anropa de lite mer avancerade händelserna vid klick? och så får man previous och next att funka också. toppen! ska prova!

MVh,
Carl

253 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)