Avatar billede thingholm.dk Nybegynder
08. februar 2003 - 14:53 Der er 7 kommentarer og
1 løsning

Local Shared Object & for-løkke

Hej

Jeg har et problem med denne kode:

    for (i=1; i<itemCount; i++) {
        _root["myLSO.data.objectId"+i] = i;
        _root["myLSO.data.objectType"+i] = _root.plan_mc["element"+i].type;
        _root["myLSO.data.objectX"+i] = _root.plan_mc["element"+i]._x;
        _root["myLSO.data.objectY"+i] = _root.plan_mc["element"+i]._y;
        _root["myLSO.data.objectRotation"+i] = _root.plan_mc["element"+i].rotation;
        _root["myLSO.data.objectWidth"+i] = _root.plan_mc["element"+i]._width;
        _root["myLSO.data.objectHeight"+i] = _root.plan_mc["element"+i]._height;
        _root["myLSO.data.objectDepth"+i] = _root.plan_mc["element"+i].getDepth();
    }
    myLSO.data.numberOfObjects = itemCount-1;
    myLSO.data.flush();
    trace("number: "+myLSO.data.numberOfObjects);
    trace(myLSO.data.objectId1);
    trace(myLSO.data.objectDepth1);

Som i kan se vil jeg gerne gemme en række properties for nogle objekter, men den gemmer dem ikke.

Dem gemmer dem derimod hvis jeg skriver dem direkte, som her:

        myLSO.data.objectId1 = i;
        myLSO.data.objectType1 = _root.plan_mc["element"+i].type;
        myLSO.data.objectX1 = _root.plan_mc["element"+i]._x;
        myLSO.data.objectY1 = _root.plan_mc["element"+i]._y;
        myLSO.data.objectRotation1 = _root.plan_mc["element"+i].rotation;
        myLSO.data.objectWidth1 = _root.plan_mc["element"+i]._width;
        myLSO.data.objectHeight1 = _root.plan_mc["element"+i]._height;
        myLSO.data.objectDepth1 = _root.plan_mc["element"+i].getDepth();
    myLSO.data.numberOfObjects = itemCount-1;
    myLSO.data.flush();
    trace("number: "+myLSO.data.numberOfObjects);
    trace(myLSO.data.objectId1);
    trace(myLSO.data.objectDepth1);


Jeg håber at nogen kan hjælpe mig med dette problem...

VH

Anders
Avatar billede thingholm.dk Nybegynder
08. februar 2003 - 14:56 #1
I sidste kode-eksempel skal der selvfølgelig stå i=1 ovenover dette:

myLSO.data.objectId1 = i;
Avatar billede alexander_j Nybegynder
08. februar 2003 - 15:55 #2
Prøv med myLSO.data["objectId"+i] i stedet for _root["myLSO.data.objectId"+i]

Jeg tænker det måske er din _root-reference den er gal med eller ...
Avatar billede thingholm.dk Nybegynder
08. februar 2003 - 23:33 #3
Tak - det løste problemet, men hvorfor?
Avatar billede alexander_j Nybegynder
09. februar 2003 - 11:14 #4
Tjae det er jo ikke nemt at sige - for jeg ved det faktsik ikke (det er nu vi skal råbe 'BARKLUND' i kor, så kan det være han kommer og forklare)!

Jeg har bare oplevet at sharedObject vil have den grundlæggende sti 'myLSO.data.' skrevet korrekt. I det hele taget er sharedObject lidt sart, jeg har fx forsøgt mig med under-henvisning(under-objecter) uden held fx:
myLSO.data.object.underobject

/Alexander
Avatar billede gotcha Nybegynder
14. februar 2003 - 14:02 #5
Alexander,

har du så husket at definere "underobject" som et objekt først (underobject = {})?

Ang. det andet problem, så er det fordi, at du jo ønsker at gemme data under objektet "data", og derfor skal der evalueres med hensyn til det og ikke _root.

Mvh Morten
Avatar billede barklund Nybegynder
16. februar 2003 - 12:51 #6
man kunne:

eval("mc1.mc2")

men har aldrig kunnet:

this["mc1.mc2"];

Bruger du array notation til objekter, så kan man ikke neste dem - selvfølgelig. Det hedder:

this.mc1["mc2"];

Det er ligesom med arrays:

t = [[4]];
trace(t[0][0]);

Det kan man godt, og bruger man "" rundt om virker det også, men sidste linie herunder virker selvfølgelig ikke:

trace(t["0"]["0"]);
trace(t["0.0"]);

Anvendt på dit eksempel bliver det til:

    for (i=1; i<itemCount; i++) {
        _root.myLSO.data["objectId"+i] = i;
        _root.myLSO.data["objectType"+i] = _root.plan_mc["element"+i].type;
        _root.myLSO.data["objectX"+i] = _root.plan_mc["element"+i]._x;
        _root.myLSO.data["objectY"+i] = _root.plan_mc["element"+i]._y;
        _root.myLSO.data["objectRotation"+i] = _root.plan_mc["element"+i].rotation;
        _root.myLSO.data["objectWidth"+i] = _root.plan_mc["element"+i]._width;
        _root.myLSO.data["objectHeight"+i] = _root.plan_mc["element"+i]._height;
        _root.myLSO.data["objectDepth"+i] = _root.plan_mc["element"+i].getDepth();
    }
    myLSO.data.numberOfObjects = itemCount-1;
    myLSO.data.flush();
    trace("number: "+myLSO.data.numberOfObjects);
    trace(myLSO.data.objectId1);
    trace(myLSO.data.objectDepth1);
Avatar billede barklund Nybegynder
16. februar 2003 - 12:52 #7
Det er altså ikke _root-referencen, der er gal, men din anvendelse af array notationen... :o)
Avatar billede barklund Nybegynder
25. marts 2003 - 12:16 #8
Lukke?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester