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()