Dynamisk generering af target path
Jeg vil gerne lave et dynamisk galleri.Der skal være 3 billeder, som bliver vist ad gangen.
Hvilke 3 der starter med at blive vist skal kunne varieres fra gang til gang - eks med loadVariables.
Udover det skal man kunne bladre i et ukendt antal nye billeder.
Jeg har en film hvor jeg bruger attachMovie til at til sætte et movieClip ind, hvor instance navnet så bestemmer hvilket billede clippet skal vise. For nemheds skyld hedder de det samme plus et tal.
Man skal kunne bladre både forlæns og baglæns, så jeg placerer også 2 ekstra billeder på hver sin side af scenen så de er klar til at "køre" ind.
Jeg har lavet et eksempel, hvor der er 9 billeder i alt.
For at vide hvilke movieclips, der skal flyttes når man trykker "forward" sætter de 5 aktuelle MC'ers nummer ind i et Array.
Så arrayet onScreen ser sådan ud: onScreen("9", "1", "2", "3", "4")
Når man trykker på Forward starter en function, som i en for løkke flytter de fem movieClips, der er nævnt i onScreen arrayet.
Mit problem er at når jeg får bladret op til at skulle sætte movieClip9 ind på scenen, virker det pludselig ikke.
Det vil sige - attachMovie virker fint.
Men pludselig opfatter den instancenavnet som en eksisterende variabel eller lignende. I hvert fald kan jeg ikke flytte movieClippet ved at skrive targetpath dynamisk, som ellers virker med de andre.
Jeg kan se at det er sådan med de movieClips der bliver nummereret 1 - 4 og 9. Sjovt nok præcis dem der står i mit array til at beynde med.
Er der en måde hvor man kan tvinge et stykke tekst til at være en string? - eller hvad det nu er der er galt?
Her er koden i første frame af min movie:
var pic1 = "dummy.jpg";
var pic2 = "dummy.jpg";
var pic3 = "dummy.jpg";
var pic4 = "dummy.jpg";
var pic5 = "dummy.jpg";
var pic6 = "dummy.jpg";
var pic7 = "dummy.jpg";
var pic8 = "dummy.jpg";
var pic9 = "dummy.jpg";
var next = 5;
var prev = 9;
for (i=1; i<4; i++){
attachMovie("picHolder", ("mcPic"+i), i);
_root["mcPic"+i]._x = ((i*148)-133);
_root["mcPic"+i]._y = 2;
}
attachMovie("picHolder", ("mcPic"+4), 10);
_root["mcPic"+4]._x = 474;
_root["mcPic"+4]._y = 2;
attachMovie("picHolder", ("mcPic"+9), 11);
_root["mcPic"+9]._x = -146;
_root["mcPic"+9]._y = 2;
onScreen = new Array("9", "1", "2", "3", "4");
function forward() {
for (l=0; l<5 ;l++){
toMove = onScreen[l];
_root["mcPic"+toMove]._x = (_root["mcPic"+toMove]._x)-148;
}
toUnload = onScreen[0];
_root["mcPic"+toUnload].unloadMovie();
attachMovie("picHolder", ("mcPic"+next), 10+next);
_root["mcPic"+next]._x = 474;
_root["mcPic"+next]._y = 2;
onScreen.push(next);
onScreen.splice(0, 1);
if (next>=9){next=1;}
else {next++;}
if (prev<=1){prev=9;}
else {prev--;}
}
Her er koden i det movieclip som jeg sætter ind med attachmovie:
var whichPic = this._name.slice(2)
loadMovie(_root[whichPic], "ins-picPlace");