Skip to main content
Participant
March 9, 2021
Answered

Use of radiobuttons

  • March 9, 2021
  • 1 reply
  • 287 views

Hi, I'm trying to figure out a problem with the use of radio buttons, and radio button groups. I'm trying to set a value to each radio button, so and then use if-tests to use them in my equation. But my radio buttons value won't show up, and I get this error; 

Scene 1; Layer 'Layer_1', Frame 1, Line 166, Column 17  1120: Access of undefined property event

 

Hope someone can help. 

 

This is my code: 

import fl.controls.ComboBox;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.MovieClip;
import fl.controls.RadioButton;
import fl.controls.RadioButtonGroup;
import fl.controls.DataGrid;
import fl.data.DataProvider;
import fl.controls.dataGridClasses.DataGridColumn;

// Her koder jeg en knapp som gir informasjon angående applikasjonen, og hva man skal gjøre
btnInfo.addEventListener(MouseEvent.MOUSE_OVER, visInfo);
function visInfo(evt: MouseEvent): void {
txtInformasjon.visible = true;
stage.addChild(tabell);

var myFormat: TextFormat = new TextFormat();
myFormat.font = "Verdana";
myFormat.color = 0x000000;
myFormat.size = 15;
txtInformasjon.defaultTextFormat = myFormat;

// !!! text content must come last
txtInformasjon.text = "Dette er en treningskalkulator som beregner kaloriforbruket ditt under aktiviteten du har valgt. Velg aktivitet, så intensitet og så varighet, deretter beregner appen alt for deg!";
}

btnInfo.addEventListener(MouseEvent.MOUSE_OUT, sjulInfo);
function sjulInfo(evt: MouseEvent): void {
txtInformasjon.visible = false;
stage.removeChild(tabell);
}

// -------------------- Del 1: Info ---------------------
//Steg 1: Drar en datagrid til stage, og sletter den. Deretter fyller jeg inn info ang. aktiviteter og intensitet
var tabell: DataGrid = new DataGrid();
tabell.x = 300;
tabell.y = 75;
tabell.width = 500;
tabell.height = 125;

//Steg 3: Setter inn kolonner og rader
var kol1: DataGridColumn = new DataGridColumn("Aktivitet");
var kol2: DataGridColumn = new DataGridColumn("Kcal_per_time");
var kol3: DataGridColumn = new DataGridColumn("Tom");
var kol4: DataGridColumn = new DataGridColumn("Intensivitet");
var kol5: DataGridColumn = new DataGridColumn("Prosent");

// alle kolonnene legges til i tabellen
tabell.addColumn(kol1);
tabell.addColumn(kol2);
tabell.addColumn(kol3);
tabell.addColumn(kol4);
tabell.addColumn(kol5);

//Steg 4: Fyller inn alle cellene med korrekt info
tabell.addItem({
Aktivitet: "Aerobics",
Kcal_per_time: "814",
Tom: ".",
Intensivitet: "Lav",
Prosent: "80% av normalen"
});

tabell.addItem({
Aktivitet: "Bordtennis",
Kcal_per_time: "236",
Tom: ".",
Intensivitet: "Middels",
Prosent: "100% av normalen"
});

tabell.addItem({
Aktivitet: "Fotball",
Kcal_per_time: "510",
Tom: ".",
Intensivitet: "Høy",
Prosent: "120% av normalen"
});

tabell.addItem({
Aktivitet: "Golf",
Kcal_per_time: "244",
Tom: ".",
Intensivitet: ".",
Prosent: "."
});

tabell.addItem({
Aktivitet: "Jogging",
Kcal_per_time: "666",
Tom: ".",
Intensivitet: ".",
Prosent: "."
});


// -------------------- Del 2: Appen ---------------------
//Steg 1: Drar en ComboBox + radiobutton til stage, før jeg sletter de igjen

//Steg 2: Henter ComboBoxen, og legger aktivitetene inn i ComboBoxen
var aktivitet: ComboBox = new ComboBox();
aktivitet.x = 50;
aktivitet.y = 150;
aktivitet.width = 150;
aktivitet.prompt = "Velg en aktivitet";
stage.addChild(aktivitet);

aktivitet.addItem({
label: "Aerobics"
});

aktivitet.addItem({
label: "Bordtennis"
});

aktivitet.addItem({
label: "Fotball"
});

aktivitet.addItem({
label: "Golf"
});

aktivitet.addItem({
label: "Jogging"
});

//Steg 3: Henter radiobuttons
var lav: RadioButton = new RadioButton();
var middels: RadioButton = new RadioButton();
var hoy: RadioButton = new RadioButton();
var rbGrp: RadioButtonGroup = new RadioButtonGroup ("intensivitet");

lav.x = 50;
lav.y = 210;
middels.x = 50;
middels.y = 240;
hoy.x = 50;
hoy.y = 270;

lav.value = 0.80;
hoy.value = 1.20;

lav.label = "Lav";
middels.label = "Middels";
hoy.label = "Høy";

stage.addChild(lav);
stage.addChild(middels);
stage.addChild(hoy);

lav.group = middels.group = hoy.group = rbGrp;

//Steg 4: Definerer nødvendige variabler, samt tømmer tekstbokser
txtMin.text = "";
txtMin.restrict = "0-9";
txtSvar.text = "";

var minutt: int = 0;
var forbruk: int = 0;
var sport: String = "";
var intensivitet: int = 0;

rbGrp.addEventListener (MouseEvent.CLICK, valg);
function valg (evt: MouseEvent) : void {
intensivitet = event.target.selection.value;
}

btnKalori.addEventListener(MouseEvent.CLICK, kalori);
function kalori(evt: MouseEvent): void {
minutt = int(txtMin.text);
sport = aktivitet.selectedLabel;

if (sport == "Aerobics") {
forbruk = (814/60 * intensivitet * minutt);
txtSvar.text = "Kaloriforbruket ditt var: " + forbruk + " kcal";
}

/* if (sport == "Aerobics" && middels.enabled) {
forbruk = (814/60 * minutt);
txtSvar.text = "Kaloriforbruket ditt var: " + forbruk + " kcal";
}

if (sport == "Aerobics" && hoy.enabled) {
forbruk = (814/60 * 1.20 * minutt);
txtSvar.text = "Kaloriforbruket ditt var: " + forbruk + " kcal";
}*/

}

    This topic has been closed for replies.
    Correct answer kglad

    in the future, indicate to us the line with the error.

     

    this:

     

    function valg (evt: MouseEvent) : void {
    intensivitet = event.target.selection.value;
    }

     

    should be:

     

    function valg (evt: MouseEvent) : void {
    intensivitet = evt.target.selection.value;
    }

    1 reply

    kglad
    Community Expert
    kgladCommunity ExpertCorrect answer
    Community Expert
    March 9, 2021

    in the future, indicate to us the line with the error.

     

    this:

     

    function valg (evt: MouseEvent) : void {
    intensivitet = event.target.selection.value;
    }

     

    should be:

     

    function valg (evt: MouseEvent) : void {
    intensivitet = evt.target.selection.value;
    }

    Participant
    March 9, 2021

    I'll indicate to you with the error line next time. I have another problem with this code, when I run it the radio buttons value for lav and hoy doesn't work correctly. Do you know how to fix this, so their value works correctly? Heres my updated code: 

    import fl.controls.ComboBox;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.display.MovieClip;
    import fl.controls.RadioButton;
    import fl.controls.RadioButtonGroup;
    import fl.controls.DataGrid;
    import fl.data.DataProvider;
    import fl.controls.dataGridClasses.DataGridColumn;

    // Her koder jeg en knapp som gir informasjon angående applikasjonen, og hva man skal gjøre
    btnInfo.addEventListener(MouseEvent.MOUSE_OVER, visInfo);
    function visInfo(evt: MouseEvent): void {
    txtInformasjon.visible = true;
    stage.addChild(tabell);

    var myFormat: TextFormat = new TextFormat();
    myFormat.font = "Verdana";
    myFormat.color = 0x000000;
    myFormat.size = 15;
    txtInformasjon.defaultTextFormat = myFormat;

    // !!! text content must come last
    txtInformasjon.text = "Dette er en treningskalkulator som beregner kaloriforbruket ditt under aktiviteten du har valgt. Velg aktivitet, så intensitet og så varighet, deretter beregner appen alt for deg!";
    }

    btnInfo.addEventListener(MouseEvent.MOUSE_OUT, sjulInfo);
    function sjulInfo(evt: MouseEvent): void {
    txtInformasjon.visible = false;
    stage.removeChild(tabell);
    }

    // -------------------- Del 1: Info ---------------------
    //Steg 1: Drar en datagrid til stage, og sletter den. Deretter fyller jeg inn info ang. aktiviteter og intensitet
    var tabell: DataGrid = new DataGrid();
    tabell.x = 300;
    tabell.y = 75;
    tabell.width = 500;
    tabell.height = 125;

    //Steg 3: Setter inn kolonner og rader
    var kol1: DataGridColumn = new DataGridColumn("Aktivitet");
    var kol2: DataGridColumn = new DataGridColumn("Kcal_per_time");
    var kol3: DataGridColumn = new DataGridColumn("Tom");
    var kol4: DataGridColumn = new DataGridColumn("Intensivitet");
    var kol5: DataGridColumn = new DataGridColumn("Prosent");

    // alle kolonnene legges til i tabellen
    tabell.addColumn(kol1);
    tabell.addColumn(kol2);
    tabell.addColumn(kol3);
    tabell.addColumn(kol4);
    tabell.addColumn(kol5);

    //Steg 4: Fyller inn alle cellene med korrekt info
    tabell.addItem({
    Aktivitet: "Aerobics",
    Kcal_per_time: "814",
    Tom: ".",
    Intensivitet: "Lav",
    Prosent: "80% av normalen"
    });

    tabell.addItem({
    Aktivitet: "Bordtennis",
    Kcal_per_time: "236",
    Tom: ".",
    Intensivitet: "Middels",
    Prosent: "100% av normalen"
    });

    tabell.addItem({
    Aktivitet: "Fotball",
    Kcal_per_time: "510",
    Tom: ".",
    Intensivitet: "Høy",
    Prosent: "120% av normalen"
    });

    tabell.addItem({
    Aktivitet: "Golf",
    Kcal_per_time: "244",
    Tom: ".",
    Intensivitet: ".",
    Prosent: "."
    });

    tabell.addItem({
    Aktivitet: "Jogging",
    Kcal_per_time: "666",
    Tom: ".",
    Intensivitet: ".",
    Prosent: "."
    });


    // -------------------- Del 2: Appen ---------------------
    //Steg 1: Drar en ComboBox + radiobutton til stage, før jeg sletter de igjen

    //Steg 2: Henter ComboBoxen, og legger aktivitetene inn i ComboBoxen
    var aktivitet: ComboBox = new ComboBox();
    aktivitet.x = 50;
    aktivitet.y = 150;
    aktivitet.width = 150;
    aktivitet.prompt = "Velg en aktivitet";
    stage.addChild(aktivitet);

    aktivitet.addItem({
    label: "Aerobics"
    });

    aktivitet.addItem({
    label: "Bordtennis"
    });

    aktivitet.addItem({
    label: "Fotball"
    });

    aktivitet.addItem({
    label: "Golf"
    });

    aktivitet.addItem({
    label: "Jogging"
    });

    //Steg 3: Henter radiobuttons
    var lav: RadioButton = new RadioButton();
    var middels: RadioButton = new RadioButton();
    var hoy: RadioButton = new RadioButton();
    var rbGrp: RadioButtonGroup = new RadioButtonGroup ("intensivitet");

    lav.x = 50;
    lav.y = 210;
    middels.x = 50;
    middels.y = 240;
    hoy.x = 50;
    hoy.y = 270;

    lav.value = 0.8;
    middels.value = 1;
    hoy.value = 1.2;

    lav.label = "Lav";
    middels.label = "Middels";
    hoy.label = "Høy";

    stage.addChild(lav);
    stage.addChild(middels);
    stage.addChild(hoy);

    lav.group = middels.group = hoy.group = rbGrp;

    //Steg 4: Definerer nødvendige variabler, samt tømmer tekstbokser
    txtMin.text = "";
    txtMin.restrict = "0-9";
    txtSvar.text = "";

    var minutt: int = 0;
    var forbruk: int = 0;
    var sport: String = "";
    var intensivitet: int = 0;
    var kcal: Array = [814/60, 236/60, 510/60, 244/60, 666/60]; // aerobics, bordtennis, fotball, golf, jogging

    rbGrp.addEventListener (MouseEvent.CLICK, valg);
    function valg (evt: MouseEvent) : void {
    intensivitet = evt.target.selection.value;
    }

    btnKalori.addEventListener(MouseEvent.CLICK, kalori);
    function kalori(evt: MouseEvent): void {
    minutt = int(txtMin.text);
    sport = aktivitet.selectedLabel;

    if (sport == "Aerobics") {
    forbruk = (kcal[0] * intensivitet * minutt);
    txtSvar.text = "Kaloriforbruket ditt var: " + forbruk + " kcal";
    }

    if (sport == "Bordtennis") {
    forbruk = (kcal[1] * intensivitet * minutt);
    txtSvar.text = "Kaloriforbruket ditt var: " + forbruk + " kcal";
    }

    if (sport == "Fotball") {
    forbruk = (kcal[2] * intensivitet * minutt);
    txtSvar.text = "Kaloriforbruket ditt var: " + forbruk + " kcal";
    }

    if (sport == "Golf") {
    forbruk = (kcal[3] * intensivitet * minutt);
    txtSvar.text = "Kaloriforbruket ditt var: " + forbruk + " kcal";
    }

    if (sport == "Jogging") {
    forbruk = (kcal[4] * intensivitet * minutt);
    txtSvar.text = "Kaloriforbruket ditt var: " + forbruk + " kcal";
    }
    }

    kglad
    Community Expert
    Community Expert
    March 10, 2021

    no, i can't say.  that's beyond my limit to debug without duplicating your setup.