Avatar billede larsholmgaard_dk Nybegynder
18. juli 2001 - 09:41 Der er 6 kommentarer og
1 løsning

Tving Flash til at oprette nyt objekt i stedet for blot en pointer til det gamle?

Hej. Hvordan undgår jeg at der stadig er pointers til et objekt i Flash? Skriver jeg fx. a=10 og b=a og derefter sætter a=15, så er b, i mit tilfælde, også 15... dette er dog et tænkt eksempel og det opfører sig korrekt i Flash. Problemet er først kommet efter jeg er begyndt at arbejde med XML segmenter der skal lægges i et array. Ændrer jeg på et XML segment udenfor arrayen, så ændres det også indeni arrayet - DET er problemet.

Hvordan tvinger jeg Flash til at oprette et helt nyt objekt? Det kunne fx. være a=10, b=new(a) og b=15. I dette principielle eksempel ville der ikke være nogen pointers mellem variablerne, men hvordan gør jeg det i Flash??

På forhånd mange tak!
Avatar billede lingoman Nybegynder
18. juli 2001 - 12:12 #1
Jeg forstår dit spørgmål som at du gerne vil være i stand til at arbejde en ny kopi af objektet ( an instance ) i stedet for en pointer til dataen.

I så fald kan du bruge new Object();

fks.

sæt følgende actionScript på et movieClip

onClipEvent (enterFrame) {
    var a = 10;
    var b = new object();
    b = a;
    a = a+5;
    trace (\"b = \"+b+\", a \"+a);
}


resultatet er  \"b = 10, a 15\"  .

Metoden bør også virke med andre object, data typer, blandt andet Arrays som du var inde på.


mvh Geo
Avatar billede larsholmgaard_dk Nybegynder
19. juli 2001 - 09:48 #2
Hmmmm... virker ikke desværre. Men, ellers tak! Lige nu virker det fordi vi laver XML\'en om til en streng og derefter tilbage til et XML segment. På den måde tvinges Flash til at lave et helt nyt objekt uden pointers til andet. Problemet er så at ved en stor XML (fx. 1000 elementer) vil det tage uforholdsmæssigt lang tid at lave XML -> streng -> XML. Derfor ønsker jeg en bedre måde... nogen forslag? Det er bl.a. denne sætning jeg gerne vil ændre: _root.oXMLtemp.parseXML(_root.SegmentBuffer[bufpos]);
Avatar billede lingoman Nybegynder
20. juli 2001 - 11:24 #3

Prøv fks.

xmlObj = new XML;

xmlObj.load(\"dit_data.xml);

xmlObjCopy = new XML;

xmlObjCopy = xmlObj;

Nu kan du ændre de 2 instancer xmlObj og xmlObjCopy uafhængigt af hinanden.

Den samme princip holder for new Array().

mvh Geo
Avatar billede lingoman Nybegynder
25. juli 2001 - 11:34 #4
Hello...Er du der ?
Avatar billede lingoman Nybegynder
06. august 2001 - 14:22 #5
Du kunne da godt lige sige om det var brugbart.....
Avatar billede larsholmgaard_dk Nybegynder
06. august 2001 - 14:45 #6
Undskyld! Jeg er lige kommet hjem fra 2 ugers ferie i Italien og er ved at bladre al min mail igennem... tak for din hjælp, men det er desværre ikke noget jeg kan bruge. Flash bevarer stadig pointers til det gamle objekt. Mine kolleger har imidlertig fundet en anden måde at gøre det på og det er at kopiere xml\'en ind i arrays. Det får flashen til at kunne bladre gennem søgeresultaterne noget hurtigere og det virker tilsyneladende!
Avatar billede larsholmgaard_dk Nybegynder
26. januar 2002 - 14:45 #7
.
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