IT 2 - Gruppe D - Komponenter

08.02.2013

Løsningsskisser


Del 1: Teori. Papir og blyant, ingen hjelpemidler.

Oppgave 1

Vi har dratt en NumericStepper komponent inn i brukergrensesnittet og gitt den instance-navnet nsAntall.

a) Skriv kode som gjør at brukeren bare kan velge verdiene 0, 10, 20, 30, 40 og 50 med denne komponenten.

b) Skriv kode som kobler til en lytterfunksjon (Bruk Event.CHANGE) og lag lytterfunksjonen slik at teksten:

Du valgte å bestille 20 duppeditter

skrives til Output-panelet i Flash, hvis brukeren eksempelvis har valgt tallet 20 med komponenten.

Lytterfunksjonen skal ha formen antallEndret(evt: Event).

a) nsAntall.minimum      = 0;

    nsAntall.maximum 	= 50;

   nsAntall.stepSize 	= 10;

   nsAntall.value 	= 0;
b) nsAntall.addEventListener(Event.CHANGE, antallEndret);
   function antallEndret(evt: Event): void {

      var antall: int = nsAntall.value;

      trace("Du valgte å bestille " + antall + " duppeditter");

   }//antallEndret() 
 

Oppgave 2

Gjør det samme som i oppgave 1, men bruk Slider som komponent istedenfor NumericStepper!

sldAntall.minimum = 0;	// Valgte navn: sldAntall

sldAntall.maximum = 50;

sldAntall.snapInterval = 10;

sldAntall.value = 0;



sldAntall.addEventListener(Event.CHANGE, antallEndret);



function antallEndret(evt: Event): void {

   var antall: int = sldAntall.value;

   trace("Du valgte å bestille " + antall + " duppeditter");

}//antallEndret() 
  

Oppgave 3

Vi skal gjøre det samme som i oppgave 1 og 2, men nå skal bare verdiene 0, 10, 20 og 200 være tillatt.

Denne gangen skal vi bruke komponenten ComboBox!

var o: Object;
o = new Object();

o.label = "0";

cbAntall.addItem(o);	// Valgte navn: cbAntall



o = new Object();

o.label = "10";

cbAntall.addItem(o);



o = new Object();

o.label = "20";

cbAntall.addItem(o);



o = new Object();

o.label = "200";

cbAntall.addItem(o);



cbAntall.addEventListener(Event.CHANGE, antallEndret);



function antallEndret(evt: Event): void {

   var antall: int = int(cbAntall.selectedItem.label);

   trace("Du valgte å bestille " + antall + " duppeditter");

}//antallEndret()

 

Oppgave 4

Vi har laget tre sjekkbokser (CheckBox) og gitt dem navnene: chkMusikkanlegg, chkSoltak og chkAutomatgir. Vi har også koblet til en lytterfunksjon (sjekkbokserEndret(evt: MouseEvent) ) på alle tre sjekkboksene.

Skriv koden i lytterfunksjonen slik at teksten:

Ekstra utstyr:

	Musikkanlegg

	Automatgir

skrives i Output-panelet i Flash, hvis brukeren eksempelvis har haket av Musikkanlegg og Automatgir.

function sjekkbokserEndret(evt: MouseEvent): void {

   trace("Ekstra utstyr:");   
   if(chkMusikkAnlegg.selected) { trace("\tMusikkanlegg"); }

   if(chkSoltak.selected) { trace("\tSoltak"); }

   if(chkAutomatgir.selected) {trace("\tAutomatgir"); }
}//sjekkbokserEndret()

 

Oppgave 5

Vi har laget tre radioknapper (RadioButton) og gitt dem navnene rbRod, rbGronn og rbBla. Vi har også satt egenskapen value i de tre radioknappene til "Rød", "Grønn" og "Blå" og lagt dem i gruppen rbgFarve (datatype/klasse: RadioButtonGroup).

a) Skriv kode som kobler gruppen til lytterfunksjonen farveEndret(evt: Event). (Bruk Event.CHANGE)

b) Skriv koden i lytterfunksjonen farveEndret(evt: Event) slik at teksten:

Farve: Grønn

blir skrevet i Output-panelet i Flash, hvis brukeren eksempelvis har valgt grønn farve.

 

rbRod.group.addEventListener(Event.CHANGE, farveEndret);
function farveEndret(evt: Event): void {

   var farvevalgt: String = String(rbRod.group.selection.value);
   trace("Farve: " + farvevalgt);

}//farveEndret()

 


Del 2: Praktisk oppgave. Alle hjelpemidler.

Oppgave:

Du skal lage en del av et kalkuleringssystem hos en bilforhandler. Brukergrensesnittet skal se omtrent slik ut for det skjermbildet du skal lage funksjonaliteten for.

Figur 2: Skjermbilde i kalkulerings-applikasjon

Når brukeren har valgt:

og trykket på Beregn-knappen, skal applikasjonen regne ut samlet pris på alle tilleggene som er valgt på denne siden og skrive det ut som vist i figur 2:

Samlet tillegg i pris: kr. 85000

hvis brukeren har haket av og valgt som vist i figuren over.

Priser som skal brukes i applikasjonen:

Valg: Pristillegg:
Musikkanlegg Technics: 10000
Harman Kardon: 15000
Bose: 20000
Soltak 25000
Automatgir 30000
Metallic lakk 3500
Motorvolum 1.8 Liter 0
Motorvolum 2.2 Liter 40000
Motorvolum 3.2 Liter 75000
/* Forutsetninger:
   Sjekkbokser har navn:

      chkMusikkanlegg, chkSoltak, chkAutomatgir og chkMetalliclakk
   Komboboks har navn: cbMusikkanlegg, og har fått lagt inn

      label "Technics", "Harman Kardon" og "Bose"

      i tabellen i dataProvider i Flash.
   Radioknappene har navn:

      rad18L, rad22L og rad32L

*/
stop();



const PRIS_SOLTAK:		Number = 25000.0;

const PRIS_AUTOMATGIR: 		Number = 30000.0;

const PRIS_METALLIC_LAKK: 	Number = 3500.0;

const PRIS_BOSE: 			Number = 20000.0;

const PRIS_HARMAN_KARDON: 	Number = 15000.0;

const PRIS_TECHNICS: 		Number = 10000.0;

const PRIS_22L: 			Number = 40000.0;

const PRIS_32L: 			Number = 75000.0;



btnBeregn.addEventListener(MouseEvent.CLICK,beregn);



function beregn(evt: MouseEvent):void {

	var sum: Number = 0.0;



	if (chkMusikkanlegg.selected) {

		var valgt: int = cbMusikkanlegg.selectedIndex;

		if(valgt == 0)  {

			sum += PRIS_TECHNICS;

		}else if(valgt == 1) {

			sum += PRIS_HARMAN_KARDON;

		}else if(valgt == 2) {

			sum += PRIS_BOSE;

		}//if valgt

	}//if musikanlegg

	

	if (chkSoltak.selected) { sum += PRIS_SOLTAK; }

	

	if( chkAutomatgir.selected) {sum += PRIS_AUTOMATGIR; }

	

	if( chkMetalliclakk.selected) {sum += PRIS_METALLIC_LAKK; }



	var valgmotorvolum: int =int( rad18L.group.selection.value);

	if (valgmotorvolum == 1) {

		sum += PRIS_22L;

	}else if(valgmotorvolum == 2) {

		sum += PRIS_32L;

	}//if valgmotorvolum



	txtResultat.text = "Samlet tillegg i pris: Kr. "+sum.toFixed(0);

}//beregn()