Dokumentasjon på Spørreprogram:
Programmet skal være et spørreprogram med minst 5 spørsmål. Hvert spørsmål har 4 alternativer og man må velge en av dem. Om man ikke har valgt et svar skal man ikke kunne trykke svarknappen. Ved siden av hvert spørsmål(untatt den siste) er det en “Neste spørsmål”-knapp som tar deg med til neste spørsmål. Ved siden av det siste spørsmålet er det en “Ferdig”-knapp som tar deg med til en ny side der man skal kunne skrive inn en E-Post og få poengsummen sendt til E-Posten (Istedenfor å sende mail så tracer jeg den ut i “output”-vinduet, for skolepc’n min har ikke et mailprogram). Det skal være en poengteller som teller hvor mange poeng du har som alltid er der.
Slik ser den første framen med start-meny ut.
Dette er et av spørsmålene
Slik ser siste framen med E-Mail-funksjonen ut.
Jeg tenke først på å ha et veldig enkelt design som var helt hvitt med bare spørsmål, svar og poeng, men da jeg ble ferdig syntes jeg det var for kjedelig, så jeg la til start-meny med hjelp-vindu, bakgrunnsbilder og en ekstrafunksjon som gjør at brukeren bare har 10 sekunder på å svare.
Oppdeling og beskrivelse av funksjoner:
Jeg har delt opp spørsmålene i keyframes. En keyframe for hvert spørsmål og et for å skrive inn mail. Så det ble seks keyframes totalt.
I dette programmet var radiobuttons sentral. Jeg startet med å deklarere fem grupper med radiobuttons for de fem forskjellige spørsmålene (en gruppe for hver svarsett).
Starter med spørsmål 1: Når man hadde valgt et svar(en av de 4 radiobuttonene) og trukket på svarknappen, vil det komme en respons som sier om du har riktig eller feil svar, om det er riktig, vil du på et poeng som kommer opp på en poengteller på toppen. Alt dette var inn i en og samme funksjon. Jeg brukte if- og else-setninger for å skille riktige svar og feile svar, og om brukeren ikke har svart ville en enkel if-setning gjøre at svarknappen ikke fungerer. Etter if- og else-setningene har jeg satt svarknappen som .mouseEnabled = false, som gjør at man ikke kan svare om igjen. I tillegg har jeg også en “Neste spørsmål”-knapp der jeg brukte funksjonen gotoAndStop(2); 2 står for frame 2.
Etter jeg ble ferdig med første det spørsmålet var de resterende fire barnemat. Ctrl+C, Ctrl+V, endre alle instansnavnene, gruppenavnene, og badabim-badabom: Ferdig med neste spørsmål.
Jeg har forresten “txtPoeng.text = String(poeng);” i hver frame, så den alltid viser den riktige poengsummen i tekstboksen txtPoeng.
I den siste framen så deklarerte jeg først en variabel: var mailadresse = “” siden den starter med å være blank. Brukeren skal kunne skrive sin mailadresse inni. Funksjonen inni send-mail-knappen var en funksjon satt sammen av forskjellige variabler som ble deklarert inne i selve funksjonen som sluttet med en navigateToURL-funksjon. Dette er en typisk funksjon for å sende mail. Siste-framen ble avsluttet med en “prøv igjen” knapp som tar deg med til starten igjen.
Etter jeg var ferdig med det obligatoriske som oppgaven sa måtte være med og fortsatt hadde veldig god tid før den måtte leveres inn, så lot jeg det kreative i meg få komme ut. Jeg programmerte en TimerEvent inn i alle spørsmålene som telte ned fra 10 til 0, med et intervall på 1 sekund. Når tiden går ut, vil det hoppe til neste spørsmål. Med andre ord, så om brukeren er for treg, så mister han/hun poeng på det.
Jeg prøvde først å ha alle spørsmålene i en og samme side der man kan scrolle ned med en scrollbar til neste spørsmål fra start til slutt (inspirert av noen spørreundersøkelser). Men det jeg merket midt i kodingen var at for å få scrollbaren til å funke måtte jeg convertere alt jeg ville scrolle om til MovieClip. Det kunne jeg ikke, for da ville man ikke kunne svare på spørsmålene og en bunke med feilmeldinger kom opp… Jeg trodde jeg måtte slette alt jeg hadde gjort starte på nytt (╯°□°)╯︵ ┻━┻ men det gikk bra, jeg fant ut hvordan man kunne bruke forskjellige frames til å gjøre det isteden.
Etter jeg ble ferdig med alle spørsmålene testet jeg selvfølgelig om programmet funket. Det gjorde den, men så merket jeg at jeg alltid startet med 0 poeng i spørsmål to selv om jeg allerede hadde fått riktig på det forrige spørsmålet. Da kom jeg på at jeg hadde glemt å kode at String(poeng) skal være inni poeng-tekstboksen i alle framesene.
"Neste spørsmål"-knappene mine kræsjet litt med svar-knappene, for man kunne check av et svar uten å trykke svar, men man kunne fortsatt gå til neste spørsmål. Dette løste jeg ved hjelp av TimerEvent-funksjonen. Inne i funksjonen til "Neste spørsmål"-knappen hadde jeg en if-setning som sa at hvis time.running == true, om tiden tikker, så skulle den return verdier, for jeg stoppet tiden om brukeren har trykket på svar, dermed kan man ikke gå til neste spørsmål uten å svare så lenge man har tid. Man kan gjøre dette på flere måter, som f.eks. så har jeg tatt mouseEnabled = false; på svar-knappen om man har svart så man ikke kan svare en gang til, så inne i "Neste spørsmål"-funksjonen kunne også skrevet om mouseEnabled var true så skulle den return, men det gjør akkurat det samme.
TimerEvent-funksjonene tok ganske mye av tiden min, for det ble dannet bug på bug på bug. Jeg brukte først den samme variabelen som teller ned tiden på alle spørsmålene, men det ble feil, den begynte å tikke dobbelt på neste spørsmål osv. for variabelen blir jo kjørt flere ganger samtidig. Så jeg lagde en variabel for hvert av spørsmålene.
Etter det så dukket det opp en bug som jeg brukte lang tid på å løse... Om jeg trykket på neste spørsmål når jeg var f.eks. på 7 sek, så ville tiden bli 10 igjen, men etter et sekund, så ville den bli 6, så selve nedtellinga var riktig, men jeg brukte veldig lang tid på å finne hva feilen var, fordi noen av spørsmålene hadde den feilen, og noen hadde ikke, og de hadde samme kode. Men jeg fant senere ut at jeg burde heller ha satt tekstboksen som countDownSecs istedenfor totalSecs. Forskjellen er at totalSecs = 10, og countDownSecs = totalSecs som i funksjonen har blitt til countDownSecs = countDownSecs - sek, der sek er variabelen for 1 sekund.
Ellers ble det ikke flere feil i dette programmet. Testene gikk ganske smooth hele veien fram til TimerEventene og feilmeldingene var nesten bare skrivefeil som “gruppeSkes” istedenfor “gruppeSeks”.
Takk til IT-2 boka og Youtube-brukeren RiverCityGraphix for tutorials og guides :-)
Jeg har også lagt ut programmet på hjemmesiden min! Klikk her