Avatar billede thingholm.dk Nybegynder
01. december 2003 - 13:25 Der er 22 kommentarer og
1 løsning

this kontrant _root

Hej

Jeg har dette loop:

for (x=1; x<=5; x++) {
_root["day"+x+"_txt"].text = x;
}

Det ville virke fint the MC'erne lå i _root, men det gør de ikke...De ligger inde i et andet MC. Hvordan refererer jeg så til dem? Jeg har prøvet med this["day"+x+"_txt"].text = x;, men det virker ikke...

VH

Anders
Avatar billede docks Nybegynder
01. december 2003 - 14:05 #1
for (x=1; x<=5; x++) {
_root.MC["day"+x+"_txt"].text = x;
}
Avatar billede thingholm.dk Nybegynder
01. december 2003 - 14:09 #2
referencen må helst ikke være absolut
Avatar billede jakwag Nybegynder
01. december 2003 - 14:22 #3
enten this._parent.MC["day"+x+"_txt"].text = x;

alt efter hvor langt tilbage du skal må du lave flere parents.

: ) Jakob
Avatar billede jakwag Nybegynder
01. december 2003 - 14:24 #4
eller man kan på den main timeline skrive:

roden = this;

og så

roden.MC["day"+x+"_txt"].text = x;

men det kommer lidt an på hvordan dine scripts og filmen er skruet sammen.
Avatar billede thingholm.dk Nybegynder
01. december 2003 - 14:30 #5
Hvad skal der så stå i stedet for MC i mit tilfælde?
Avatar billede thingholm.dk Nybegynder
01. december 2003 - 14:34 #6
Humlen er at referencen skal være relativ
Avatar billede docks Nybegynder
01. december 2003 - 14:44 #7
kan du da ikke bruge

_parent["day"+x+"_txt"].text = x;

???
Avatar billede docks Nybegynder
01. december 2003 - 14:45 #8
this._parent giver er jo det samme som _parent ...
Avatar billede thingholm.dk Nybegynder
01. december 2003 - 15:15 #9
this._parent giver ikke den rigtige reference
Avatar billede _k Nybegynder
01. december 2003 - 15:47 #10
m = "day" + x + "_txt");
eval("_root.mcNavn." + m).text = x;

Kønt? Nej! Men mon ikke det virker? Du kan også eval'e mcNavnet inden i parantesen, hvis det er det du vil.....
Avatar billede thingholm.dk Nybegynder
01. december 2003 - 15:51 #11
Jeg havde overvejer eval, men kun hvis der ikke var andre udveje
Avatar billede nikolajdu Nybegynder
01. december 2003 - 15:56 #12
Du kan da heller ikke bruge _parent alene når de jo ikke ligger i _parent, men i et movieclip...

_parent.MC["day"+....]
Avatar billede jakwag Nybegynder
01. december 2003 - 16:08 #13
det er i virkeligheden ikke særlig svært, men det kræver at du fortæller os præcis hvordan din struktur ser ud. Ellers er det jo umuligt at definere stien til det.

Ideen er at du bruger en _parent for hver gang du skal tilbage. Hvis du er i et mc som ligger på maintimeline skal du skrive _parent for at komme til main timeline.

Hvis du er i et mc som ligger i et mc som ligger på maintimeline skal du skrive _parent._parent for at komme til main timeline.

_parent betyder altså én tilbage. "This" behøves ikke nødvendigvis, men det kan gøre det nemmere alt efter hvordan dine scripts er defineret.
Avatar billede thingholm.dk Nybegynder
01. december 2003 - 16:15 #14
Hej igen, strukturen er _root.mitMC

Inde i mitMC er koden

for (x=1; x<=5; x++) {
_root["day"+x+"_txt"].text = x;
}

Jeg leder efter en kode, som skal skifte _root ud, som kan køre inde i dette MC (mitMC), dvs. uden at kende navnet på mitMC.
Avatar billede nikolajdu Nybegynder
01. december 2003 - 16:17 #15
this["day"....

Virker jo nok ikke for du siger du har prøvet - omvendt så må du give os noget kode.
Avatar billede thingholm.dk Nybegynder
01. december 2003 - 16:24 #16
Det er tilsyneladende kun _parent[] og _root[] der virker på denne måde. Der er ikke mere kode, men jeg kan lave en FLA fil hvis det ville hjælpe.
Avatar billede mat Nybegynder
01. december 2003 - 16:41 #17
nej det er ikke kun _parent og _root der virker med array notation, this["some_object"] virker fint!

problemet må være at din struktur ikke er som du selv mener?!?

mvh mat
Avatar billede thingholm.dk Nybegynder
01. december 2003 - 16:55 #18
ahhh, fuck - problemet er at den er inde i en onLoad funktion og this refererer selvfølgelig til denne:

loadWeather = function () {
    var weather:XML = new XML();
    weather.ignoreWhite = true;
    weather.load("dk_fivedayscheme.xml");
    weather.onLoad = function() {
        for (i=0; i<weather.firstChild.childNodes.length; i++) {
            // XML
            var myXML:XML = weather.firstChild.childNodes[i];
            this["day"+(i+1)+"_txt"].text = myXML.attributes.name;
        }
    };
};

Hvordan refererer jeg så til den ?
Avatar billede barklund Nybegynder
01. december 2003 - 17:23 #19
loadWeather = function () {
    var weather:XML = new XML();
    var base:MovieClip = this;
    weather.ignoreWhite = true;
    weather.load("dk_fivedayscheme.xml");
    weather.onLoad = function() {
        for (i=0; i<weather.firstChild.childNodes.length; i++) {
            // XML
            var myXML:XML = weather.firstChild.childNodes[i];
            base["day"+(i+1)+"_txt"].text = myXML.attributes.name;
        }
    };
};
Avatar billede barklund Nybegynder
01. december 2003 - 17:23 #20
Inde i din onLoad er this jo en reference til "weather"-objektet.
Avatar billede thingholm.dk Nybegynder
01. december 2003 - 17:41 #21
Smukt - smider du et svar?
Avatar billede barklund Nybegynder
01. december 2003 - 18:07 #22
kk :)
Avatar billede barklund Nybegynder
02. december 2003 - 10:41 #23
Tarker for points ;)
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