Komponenten TileList
Greit å redigere bildene til 200 x 200 pixler. Teoretisk skulle .png bli mindre enn .jpg på tegnede bilder, så det kan være en ide å bruke .png - formatet.
Lydkuttene tilpasses med Audacity
Beste måten å gjøre dette på er antageligvis:
Se også kommentarer til en prøve i høst.
Hvis animasjonen får navnet intro, vil følgende kode gi det resultatet oppgaven ønsker:
intro.addEventListener(MouseEvent.MOUSE_OUT, snurr);intro.addEventListener(MouseEvent.MOUSE_OVER, stopp);function snurr(evt:MouseEvent) { intro.play(); }//snurr()function stopp(evt:MouseEvent) { intro.stop(); }//stopp()
a) Egen intro-nøkkelramme med kode omtrent noe slikt:
(txtNavn, txtMelding og btnVidere er komponenter i GUI.)
stop();var navn:String;btnVidere.addEventListener(MouseEvent.CLICK, videre);function videre(evt:MouseEvent) { navn = txtNavn.text;if(navn != "") { txtMelding.text = ""; gotoAndStop(2); } else { txtMelding.text = "Du må oppgi navn for å gå videre"; }//if navn ok}//videre()
b) Datastruktur omtrent slik:
// Figurer (filnavn) i tabell: var figurer : Array = ["kvadrat.png", "trekant.png", "rombe.png", "sirkel.png", "trapes.png" ];var antalloppgaver: int = figurer.length;// Diverse variabler for å huske ting:var antallforsok: int = 0; var oppgavenummer: int = 0; var resultat: Array = new Array();// Lyd som allerede er importert til Library fra lydfiler: var lydfeil: LydFeil = new LydFeil(); var lydriktig: LydRiktig = new LydRiktig();
Funksjon som kjøres for hver oppgave og som også brukes til å starte det hele:
function nyOppgave(): void { if(oppgavenummer < antalloppgaver) { visOppgaveFigur(); visAlternativFigurer(); antallforsok = 0; oppgavenummer ++; ... sett diverse tekstfelter... } else { gotoAndStop("Resultat"); }//if }//nyOppgave()
Visning av oppgavefiguren:
Her er det lurt å laste figuren inn i en UILoader-komponent (loader) som er lagt inne i et MovieClip (oppgavefigur).
MovieClip kan som kjent roteres, og da følger innholdet med på rotasjonen!
function visOppgaveFigur(): void { oppgavefigur.loader.source = figurer[oppgavenummer]; var rotasjon: Number = 90*Math.floor(Math.random()*4); // 90 grader * 0,1,2 eller 3 oppgavefigur.rotation += rotasjon; }//VisOppgaveFigur()
Visning av de alternative figurene:
Her kan man spare endel koding ved å bruke komponenten TileList, en komponent som man kan legge bilder på:
TileList (Se også side 269 i PiAS!) x, y, width, height, visible, ...
selectedItem
rowCount, columnCount
rovHeight, columnWidth
directionremoveAll()
addItem()
getItemAt()Denne komponenten (alternativer) gjør det enklere å lage funksjonen som viser alle de alternativene brukeren kan velge:
function visAlternativFigurer(): void { alternativer.removeAll(); // Fjerner alt fra TileList var eske: Array = figurer.concat(); // Kopi av opprinnelig tabell er en "Eske" // som vi trekker figurer fra tilfeldig, for(var i:int = 0; i< figurer.length; i++) { var indeks: int = Math.floor(Math.random()*eske.length); // Trekker en indeks var figur: String = eske.splice(indeks,1); // Fjerner trukket figur alternativer.addItem({source:figur}); // Legger figur i alternativer }//for }//VisAlternativFigurer()
Her kunne man eventuelt laget 5-6 ekstra tabeller med figurene i forskjellige rekkefølger, men det kan være greit å
merke seg hvordan man lager en "eske" og trekker ut "lapper" tilfeldig uten å legge tilbake slik det er gjort i funksjonen
visAlternativFigurer() over!TileList komponenten fungerer også som en knapp hver gang brukeren klikker på en av figurene, så i starten av
programmet henger vi på en lytter:
alternativer.addEventListener(MouseEvent.CLICK, sjekkSvar);
og lytterfunksjonen kan da se omtrent slik ut:
function sjekkSvar(): void { antallforsok++; var valg: Object = alternativer.selectedItem; // Henter valgt figur var navn: String = valg.source; // og navnet på figuren var fasit: String = oppgavefigur.loader.source; // og fasiten if( svar == fasit ) { lydriktig.play(); resultat.push(antallforsok); nyOppgave(); } else { lydfeil.play(); }//if }//sjekkSvar()
"Relevant dokumentasjon":
Bør skrive noe om disse punktene:
- Brukverveiledning
- Design
- implementasjon:
- Gui
- Datastruktur
- Programstruktur
- Testing
Viktig å prioritere Testing, da oppgaven spesielt nevner dette.
Skriv da forslag til testprosedyrer og testdata som kontrollerer i forhold til en kravspesifikasjon.
Kravspesifikasjon bør inneholde:
Fyll ut punktene i kravspesifikasjonen med krav fra oppgaveteksten og ting du mener er relevant i forhold til hele konteksten til oppgaven.