Kommentarer til eksamen våren 2013

Aktivitet og energiforbruk


Oppgave 1

Grovplan:

Rød-merket:

Henger lytteren tikk() på stage som reagerer på hendelsen Event.ENTERFRAME, som skjer i samme takt som Framerate. (FR)

tikk() teller opp sekunder, regner ut totalt energiforbruk (kcal) og oppdaterer søyle.

Blå-merket:

Henger lytteren på tidUte() på en timer t: TIMER, som reagerer på hendelsen TimerEvent.COMPLETE.

tidUte() skifter til neste ramme.

Rammene har kode som oppdaterer energiforbruket i de fire fasene og starter en ny timer i hver fase som bestemmer hvor lenge fasen varer.

Kode-eksempler:

Setter opp lytterfunksjoner i en oppsetts-ramme:

/********************************
        Oppgave 1
	Skisse:
	    Uten lyd og bilder
*********************************/
const MAKS_KALORIER: Number = 2500;  // 2500 kcal når scale = 1
var tid: int = 0;		// Tid i 24-dels sekund. 
var kcal_per_time: Number = 0;  
var kcal: Number=0;		// Kilokalorier totalt
var framenummer: int = 2;  // 2,3,4 og 5
var t: Timer=null;		// Lager ny i hver ramm
// Henger lytter på Flash-klokke (FrameRate=24)
stage.addEventListener(Event.ENTER_FRAME,tikk);
// Kjøres hvert 24-dels sekund.
// (Et sekund tilsvarer to timer i simulert virkelighet.)
function tikk(evt: Event):void {
	trace("tikk():");
	tid++;
	kcal += 1/24*2*kcal_per_time;  // Legg til 
	soyle.scaleX = kcal/MAKS_KALORIER;
	trace("Tid: "+tid+" kcal: "+kcal);
	trace("scaleX: " + soyle.scaleX+" width: "+soyle.width);
}//tikk()
// Kjøres hver gang timer sender TimerEvent.COMPLETE
function tidUte(evt: TimerEvent):void {
	trace("tidUte():");
	framenummer++;
	if(framenummer==6){
		framenummer=2;
	}//if siste frame
	gotoAndStop(framenummer);
	trace("Går til frame nr: " + framenummer);
}//tidUte()

Frame 2: Søvn

/***********************
    Ramme nr 2:  Søvn
************************/
stop();
// Nytt døgn, nullstiller:
tid=0;
kcal=0;
// Justerer energiforbruk og timer:
kcal_per_time=92;
t=new Timer(1000,4);
t.addEventListener(TimerEvent.TIMER_COMPLETE,tidUte);
t.start();

Frame 3: Skole

kcal_per_time=110;
t=new Timer(1000,3);
t.addEventListener(TimerEvent.TIMER_COMPLETE,tidUte);
t.start();

Frame 4: Fritid og Frame 5: Hvile

Tilsvarende ramme 2 og 3...

Oppgave 2

Komponenter:

Aktivitet: Komboboks: aktivitet_Cb
Vekt: Tekstfelt: vekt_Tf
Regn ut: Knapp: regnut_Btn
Energi: Tekstfelt: energiforbruk_Tf
const STILLE: int = 0;
const TUR: int =    1;
regnut_Btn.addEventListener(MouseEvent.CLICK,regnUt);
function regnUt(evt: MouseEvent): void {
   var vektStr: String = vekt_Tf.text.replace(",",".");
   var vekt: Number = Number(vektStr);
   if(isNaN(vekt)) {
      energiforbruk_Tf.text="Du har skrevet noe ulovlig i vekt";
   } else {
      var PAL:  Number = 0.0;
      if(aktivitet_Cb.selectedIndex==STILLE) {
         PAL = 1.2;
      }else if(aktivitet_Cb.selectedIndex==TUR) {
         PAL = 1.4;
      }else{
         trace("Feil valg i vekt-komboboks");
      }//if
      var BMR: Number = 35.27 + (0.558*vekt);
      var energiforbruk: Number =BMR*PAL;
      energiforbruk_Tf.text=energiforbruk.toFixed(0);
   }//if isNaN()
}//regnUt()