27. april 2004 - 13:44Der er
7 kommentarer og 1 løsning
opbygning af Flash-spil/quiz
Jeg vil forsøge at lave en quiz i Flash, og jeg kunne godt bruge nogle gode råd til opbygningen. Min plan er at der bliver stillet et spørgsmål med 4 mulige svar, svarer man rigtigt får man point og går videre, og svarer man forkert får man ikke point, men går også videre. Det som jeg ser som et problem er hvordan jeg får samlet point'ene sammen og vist score til sidst? jeg vil gerne have at spørgsmålene kommer i tilfældig rækkefølge hver gang man kører quizzen på ny, og her har jeg læst om en løsning i en bog, men her var spørgsmålene kun tekst som blev hentet fra en ekstern tekstfil, men jeg skal bruge både tekst og billeder, som jeg vil samle i movieClips - men hvordan gøre man så? Dejligt hvis nogen har forslag til løsninger, eller kender nogle gode links hvor jeg kan finde inspiration?
At holde styr på points'ne er jo ikke noget problem, du kan lægge variablen i _root:
_root.points++;
At hente spørgsmål og billeder ind og blande dem inden brug er heller ikke noget problem, du kan f.eks lave et array med tal og blande det, for derefter at bruge det som rækkefølge på tekst (og billeder)
Her er et lille smukt script, jeg har lavet til dig, som laver et array og blander tallene fra 1 til 10 i det:
talarray = new Array(10); function putInd(tal) { plads = random(talarray.length); if(talarray[plads] == null) talarray[plads] = tal; else putInd(tal); } for(i = 1; i <= talarray.length; i++) putInd(i, random(talarray.length) - 1); trace(talarray.toString());
så kan du jo kalde variablerne fra tekstfilen tekst1, tekst2... og billederne billede1.jpg, billede2.jpg......
og putte dem ind i movieclips'ne i array'ets rækkefølge :)
Jeg vil gerne give dig point, men jeg behøver lidt mere hjælp. du skriver at jeg skal lægge variablen i _root, men hvor præcis gør jeg det? Som du nok kan høre er jeg ikke særlig erfaren mht. actionscripts, men vil meget gerne lære mere - jeg kan godt se ideen med dit "smukke" script, men der er nogle fundamentale ting jeg mangler for at kunne bruge det. Det er hovedsageligt hvor og hvad jeg "fæstner" scriptsene fast til - altså hvor de placeres...hjælp!?
Du skal vel have nogle knapper med nogle valgmuligheder. På knapperne skal der så henvises til en variabel i _root. Der kan man læge de variabler man vil bruge hele filmen.
on(release) { // Svaret var forkert _root.nextQuestion(); }
og så i _root (skrevet mens ingen objekter er markeret, og der står "frame actions" i actions panelet) i frame 1.
nummer = 0; talarray = new Array(10); function putInd(tal) { plads = random(talarray.length); if(talarray[plads] == null) talarray[plads] = tal; else putInd(tal); } for(i = 1; i <= talarray.length; i++) putInd(i, random(talarray.length) - 1); for(i = 1; i <= 10; i++) { _root["movieclip" + i]._visible = false; }
function nextQuestion() { _root.nummer++; //så kan du f.eks gøre de andre movieclips usynlige og vise det næste for(i = 1; i <= 10; i++) { _root["movieclip" + i]._visible = false; } _root["movieclip" + talarray[_root.nummer]]._visible = true; }
Så skal du have dine knapper og din tekst i 10 movieclips, der hedder "movieclip1", "movieclip2" som instancename.
1000 tak for din fine forklaring! Jeg har dog et, nej to tillægsspørgsmål: 1. Hvordan henter jeg pointene ud til sidst? 2. Sådan som jeg forstår det, blander scriptet spørgsmålene i hvert moviescript, men hvad nu hvis det kune r moviescriptene jeg gerne vil blande så de kommer random, men det samme movieclip ikke kommer mere end én gang?
Jeg ved godt at jeg presser citronen mht spørgsmål, og jeg vil meget gerne oprette et nyt spørgsmål, så du kan få flere points...!??
Sådan som jeg har foreslået det, laver du 10 movieclips med spørgsmål, evt. billede og knapper med valgmuligheder, en rigtig, og nogle forkerte. Du lægger alle disse movieclips oven i hinanden i filmen, og giver den instancenavne "movieclip1", "movieclip2" osv.
Når man er færdig med spørgsmål nr. 10 (dvs. man har svaret i movieclip 10), kan du evt. hoppe til næste frame i filmen og gøre hvad du vil med resultatet, så skal funktionen blot tilføjes en smule:
i Frame 1:
points = 0; nummer = 0; talarray = new Array(10); function putInd(tal) { plads = random(talarray.length); if(talarray[plads] == null) talarray[plads] = tal; else putInd(tal); } for(i = 1; i <= talarray.length; i++) putInd(i); for(i = 1; i <= 10; i++) { _root["movieclip" + i]._visible = false; }
function nextQuestion() { _root.nummer++; if(_root.nummer >= talarray.length) { _root.nextFrame(); trace("points" + _root.points); } else { //så kan du f.eks gøre de andre movieclips usynlige og vise det næste for(i = 1; i <= 10; i++) { _root["movieclip" + i]._visible = false; } _root["movieclip" + talarray[_root.nummer]]._visible = true; } }
Hej Legende.dk, jeg ved godt at spørgsmålet her er afsluttet, men jeg har meget brug for din hjælp, da jeg bakser med scriptet som du har lavet ovenfor. Problemet er at alle movieclippene vises samtidig fra start, og først når man klikker på en af svarknapperne vises mc'ene i random rækkefølge - har du ikke en løsning, så kun ét movieclip vises når man starter spillet - jeg virkelig står og skal bruge den??!! Jeg opretter selvfølgelig gerne et nyt spørgsmål og giver dig masser af points!!
Hjælp...please!!
Synes godt om
Ny brugerNybegynder
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.