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å:
- Kompilator (Compilator)
hvor hele programteksten oversettes til et helt maskinkodeprogram- Oversetter (Interpreter)
hvor en og en linje oversettes til maskikode av gangen.
Dette er mer tidkrevende (ca 10-50 ganger langsommere enn ren kompilering) men har den fordelen at det gir et mer brukervennlig utviklingsverktøy, da det er lettere å stoppe underveis i et program.- Kompilering til en simulert mikroprosessor, som deretter oversetter til ren maskinkode. Simuleringen av denne prosessoren gjøres av et eget program, en virtuell maskin.
Dette er prinsippet som brukes i programmeringsspråkene Java, C# og AS.
Dette to-trinns-prinsippet har følgende fordeler:
- Nesten like raskt som vanlig kompilering (1.5-3 ganger langsommere enn vanlig kompilering i gode virtuelle maskiner.(Java, Dalvik))
- Samme fordeler som ren oversetting
- Uavhengig av prosesssor/maskinplattform!
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):
- CLICK
- MOUSE_MOVE
- MOUSE_OVER
- MOUSE_UP
- MOUSE_DOWN
- MOUSE_OUT
- ...
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
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; }
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!
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; }
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 bilderfunction 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()