Toon posts:

[flash mx] Radio button Setdata probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// radio button die gekopieert wordt invisible
setProperty("radio", _visible, "0");
// Dynamic textbox in begin maak uw keuze
henk = "maak uw keuze";
// eerste dropmenu item is --klas--
dropmenu.addItem("--klas--");
// variablen myVars in new vars in laden
var myVars = new LoadVars();
// de array inladen en functie uitvoeren bij laden
myVars.load("myarray.txt");
myVars.onLoad = function(success) {
    // als laden succesfull is
    if (success) {
        // nieuw array en ingeladen array opsplitten
        myarray = new Array();
        myArray = myVars.myarray.split("|");
        for (i=0; i<myArray.length; i++) {
            // kopieer de radio tot het aantal van array en
            // zet op goede plaats met label
            duplicateMovieClip(radio, "radio"+i, 1+i);
            setProperty("radio" + i, _y, radio._y+(i*20));
            eval("radio" add i).setLabel(myArray[i]);
            ##eval("radio"+i).setData(myArray[i]);##
            // dropmenu items toevoegen en lengte aanpassen
            dropmenu.setRowCount(i+2);
            dropmenu.addItem(myArray[i],myArray[i]);
            
        }
    } else {
        trace("failure");
    }
};

// bij changehandler onselect
function onselect(component) {
    if (component == dropmenu) {
        if (dropmenu.getSelectedIndex() != 0) {
            henk = myArray[dropmenu.getSelectedIndex()-1];
        } else {
            henk = "maak uw keuze";
        }
    } else if (component == radioGroup) {
        ##trace(radioGroup.getvalue());##
        
    }
}

het is een beetje lange code :) ik heb om hetgene waar het omgaat 2 "#" gezet
hij labeled de radio's perfect alleen hij blijkt ze dus geen data te geven waardoor radiogroup.getvalue() undefined is ook als ik de data van 1 radio opvraag geeft ie nix weer. Ik snap echt niet wat het probleem is het lijkt wel een bug in flash ofzo..

Verwijderd

Topicstarter
niemand?

  • tie-rep
  • Registratie: Oktober 2001
  • Laatst online: 19-02 15:56

tie-rep

nu met ir. !

misschien even je vraag her-fomuleren?

Ik heb iig geen zin om je stuk code te gaan zitten debuggen.

Als je een duidelijke vraag stelt, krijg je doorgaans meer reacties...

Verwijderd

Post anders ff een .fla ofzo.
Een bug in een flash component als de radiobutton lijkt me erg onwaarschijnlijk; ik gok of een scoping probleem, of een component config probleem.

Verwijderd

Topicstarter
ik zal ff de fla posten dan
misschien even je vraag her-fomuleren?

Ik heb iig geen zin om je stuk code te gaan zitten debuggen.

Als je een duidelijke vraag stelt, krijg je doorgaans meer reacties...
de vraag is niet te herformuleren ik weet niet wat het probleem is namelijk en ik heb de flash help en google groups al helemaal doorgespit en het zou volgens mij zo moeten werken..

Het probleem is eigelijk dat Setdata niet werkt bij radiobutton terwijl de setlabel wel werkt en ook de data bij een pulldown menu werkt gewoon.

ik heb het wel kunnen oplossen door middel van een for lus de geselecteerde radiobutton te pakken en dan de label uit te lezen maar daar gaat het me niet om..

hier staat de fla, en het textbestand met vars:
http://members.home.nl/thensing/arrayradio.fla
http://members.home.nl/thensing/myarray.txt

Verwijderd

hier jou code ietwat verbeterd, en werkend :)...
't is eigenlijk nog heel 'vieze' code, ik heb een aantal dingetjes er al uitgevist, maar een aantal dingen kloppen conceptueel niet.

het kern probleem kwam door je gebruik van duplicateMovie...iets wat je eigenlijk in mx al helemaal niet meer moet doen.
Alle ingestelde data van dit component raakt verloren bij het kopieren van een instance ervan....

Flash ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
this.radio._visible = 0;
this.henk = "maak uw keuze";
this.dropmenu.addItem("--klas--");

var lv = this.myVars = new LoadVars();
lv.owner = this;
lv.load("myarray.txt");

lv.onLoad = function(s) {
    if(s){
        this.owner.onDoneLoading(this);
    }else{
        this.owner.onErrorLoading(this);        
    }
}

this.onDoneLoading = function(dat){
    this.arr = dat.myarray.split('|');
    var l = this.arr.length;
    for (var i=0; i<l; i++) {
        var mc = this.radio.duplicateMovieClip('radio'+i, _global.d++);
        mc._y += i*20;
        mc.setLabel(this.arr[i]);
        mc.setData(this.arr[i]);
        mc.setGroupName('radioGroup')
        this.dropmenu.setRowCount(i+2);
        this.dropmenu.addItem(this.arr[i], this.arr[i]);
    }
}


// bij changehandler onselect
function onselect(component) {
    if (component == dropmenu) {
        if (dropmenu.getSelectedIndex() != 0) {
            henk = myArray[dropmenu.getSelectedIndex()-1];
        } else {
            henk = "maak uw keuze";
        }
    } else if (component == radioGroup) {
        trace(radioGroup.getValue());
    }
}
Pagina: 1