Løsningsskisser prøve i Interaktivitet

21.11.2013


Teori:

1 Hva er forskjellen på en kompilert programfil og en tolket programfil.

Se side 165: (Selvom definisjonene der er litt upresise, se mitt notat: http://www.ulven.biz/it2/kompendium/kap2/kompilering.html

Det finnes også flere måter å oversette program-tekst til maskinkode på:

2. Vi har laget en knapp, som vi har gitt instansnavn: "knapp"
Skriv nødvendig kode for at denne knappen skal aktivisere en funksjon med navn "knappTrykket" når vi klikker på knappen med musen.

knapp.addEventListener(MouseEvent.CLICK, knappTrykket);

3. Vi har deklarert en variabel på denne måten:

var feil_katastrofe: String = "Noe har gått forferdelig galt, programmet har crashet og du må restarte maskinen!"

Skriv kode som skriver denne feilmeldingen til Outputpanelet i Flash Professional.

trace( feil_katastrofe);

4. Skriv kode som legger denne feilmeldingen i et tekstfelt som har instans-navnet "txtMelding"

txtMalding.text = feil_katastrofe;

5. Hvilke musehendelser har vi anledning til å registrere i kode?

MouseEvent har følgende hendelser (som egentlig er navn på tall som sendes når disse hendelsene opptrer):

Se Adobe reference: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/MouseEvent.html

6. Gjør rede for fordeler og ulemper med å bruke komponenter fra Components-panelet.

Fordeler: Standard windows-utseende, ferdig funksjonalitet, viktigste egenskaper tilgjengelig i Properties-panelet.

Ulemper: Kan se litt kjedelige ut

7. Forklar hva som skjer når disse instruksjonene blir utført:

poeng = poeng + 10;				// Variabelen poeng økes med 10. Bør være int :-)
poeng +=5;					// Tilsvarer poeng = poeng + 5;  Altså økes variabelen med 5.
if(poeng>500) { bonus+=50; }			// Hvis poeng er større enn 500 vil variabelen bonus økes med 50.
txtMelding.text = "Noe har gått forferdelig galt, programmet har crashet og du må restarte maskinen!";
						// Tekstfeltet txtMelding får innholdet i tekststrengen.
dings.x = dings.x -100;				// En grafisk variabel, vanligvis et MovieClip, flyttes 

                                                // 100 pixler mot venstre på skjermen

Praktisk:

Lag en Flash-applikasjon som inneholder følgende mekanismer:

1. Tekstfelt som viser et tall som økes med 10 hver gang du klikker på en
knapp og minker med 5 hver gang du klikker på en annen knapp.

2. Et grafisk element som beveger seg hver gang du klikker på knappene i oppgave 1.
x-koordinaten til det grafiske elementet skal være lik tallet i oppgave 1.

3. Lag en knapp som slår funksjonaliteten i oppgave 1 og 2 av og på.

4. Lag en bildeviser-komponent som veksler mellom å vise to bilder.
Bildet skal skifte hver gang du trykker på en av knappene i oppgave 1.

Oppgave 1

Hvis vi har komponenter med navn:

knappOk10, knappMink5 og txtTall

var tall: int = 0;
knappOk10.addEventListener(MouseEvent.CLICK,okMed10);

kanppMink5.addEventListener(MouseEvent.CLICK,minkMed5);
function okMed10(evt: MouseEvent):void {

   tall += 10;

   txtTall.text = "Tall: " + tall;

}
function minkMed5(evt: MouseEvent):void {

   tall -= 5;

   txtTall.text = "Tall: " + tall;

}

Oppgave 2

Hvis grafisk element har navn dings, modifiserer vi funksjonene i oppgave 1:

function okMed10(evt: MouseEvent):void {

   tall += 10;

   txtTall.text = "Tall: " + tall;

   dings.x = tall;

}
function minkMed5(evt: MouseEvent):void {

   tall -= 5;

   txtTall.text = "Tall: " + tall;

   dings.x = tall;

}

Alternativt, kan vi legge den røde koden i en egen funksjon, eksempelvis flyttDings() og kalle denne funksjonen i okMed10() og minkMed5().
Ryddigere, da det ofte er mer enn bare denne ene kodelinjen som skal gjøres, og da bør vi unngå å ha flere like kodelinjer mer enn et sted i programmet!

Oppgave 3

Ny knapp: knappAvPa:

var avpa: Boolean = true;
knappAvPa.addEventListener(MouseEvent.CLICK, funksjonalitetAvPa);
// Legg merke til denne koden, unngår bruk av IF: 

function funksjonalitetAvPa(evt: MouseEvent): void {

   avpa = ! avpa;			//Skifter til motsatt verdi: ! betyr

                                    // logisk NOT. Unngår bruk av IF:

   knappOk10.enabled = avpa;	// Kan også bruke egenskapen visible...

   knappMink5.enabled = avpa;

}

Oppgave 4

Må modifisere funksjonen i oppgave 1 ytterligere og legge til en variabel bildenr:

var bildenr: int = 1;	// Kunne også bruke en Boolean med bare to bilder
function okMed10(evt: MouseEvent):void {

   tall += 10;

   txtTall.text = "Tall: " + tall;

   dings.x = tall;

   skiftBilde();

}
function minkMed5(evt: MouseEvent):void {

   tall -= 5;

   txtTall.text = "Tall: " + tall;

   dings.x = tall;

   skiftBilde();

}
function    skiftBilde(): void {

   if(bildenr == 1) {

      bildenr = 2;

      bildeviser.source = "bilde2.jpg";	//Forutsetter bildeviser: UILoader

   } else {

      bildenr = 1;

      bildeviser.source = "bilde1.jpg";

   }//if

}//skiftBilde()