Avatar billede jerving Nybegynder
25. november 2002 - 14:22 Der er 3 kommentarer og
1 løsning

attachMovie?

Hej,

Til en lille indkøbssektion har jeg lavet et MC (_root.preBeregn) med et tekstfelt, der viser en variabel, som beregner en samlet pris, når der i et andet MC afkrydses nogle checkBoxe.

Jeg har lavet det sådan at brugeren derefter kan trække _root.preBeregn ned i et andet MC, (som et slags drag & drop købssystem), der fungerer som en indkøbskurv. I det _root.preBeregn slippes over indkøbskurven (_root.totalBeregn) forsvinder _root.preBeregn med _visible = false, der vises et linkage MC, der er linket fra fra mit libary (attachMovie) inde i en scrollPane i_root.totalBeregn.

Med flg. kode inde i et MC i scrollPane’en (_root.totalBeregn.ListViewer) fungerer det også helt fint når det første ”træk”, eller køb foretages. Men idéen er den at der naturligvis skal kunne foretages flere/adskellige køb. Men når næste køb foretages erstattes, det der ligger i scrollPanen frem for at attache et nyt MC under det, som allerede er der.

Koden fra det MC, der ligger i scrollPane’en: (i første frame er der et stop(); MC’et afspilles når der trækkes et køb ned i scrollPan’en).

if(Number(_root.saveNum)<1){
    i = 1;
}else{
    i = Number(_root.saveNum)+1;
}
this.attachMovie("byListItem","byListItem"+i,i+2);
eval("this.byListItem"+i)._x = 0;
eval("this.byListItem"+i)._y = ((eval("this.byListItem"+(i-1))._y)+(eval("this.byListItem"+i._height)));
eval("this.byListItem"+i).txtDisp = eval("_root.Udbyder");
_root.saveNum = i;
_root.totalBeregn.ListViewer.refreshPane();

(Håber ikke mit spørgsmål er helt vulapyk ;o) men det er lidt svært at formulere).

Er der nogen der kan fortælle mig hvorfor der ikke bliver attach’et et nyt MC efter første ”køb”, når der trækkes et nyt ”køb” ned i scrollPane’en?

Med venlig hilsen

jerving
Avatar billede paask Nybegynder
26. november 2002 - 08:47 #1
Hej Jerving,

Du mangler somend bare lige et par paranteser rundt om 'i' ved height når du definerer _y positionen på det nye clip. Hvis du tracer 'i' kan du også se, at der rent faktisk bliver attachet et nyt clip hver gang. De bliver bare placeret i _y = 0; da udregningen giver undefined som resultat.

Skriv istedet dette og alt burde virke efter planen:

eval("this.byListItem"+i)._y = ((eval("this.byListItem"+(i-1))._y)+(eval("this.byListItem"+(i))._height));

mvh
paask
Avatar billede jerving Nybegynder
26. november 2002 - 09:20 #2
Aaaaah, nu har jeg leget med de parenteser i 100 år, men jeg kunne ikke se det. Super Paask! Godt set!

Med venlig hilsen

jerving
Avatar billede paask Nybegynder
26. november 2002 - 09:28 #3
Det var da så lidt, jeg er glad for jeg kunne hjælpe :)

Hvis du vil slippe for alle de paranteser, så foreslår jeg du måske begynder at kode med lidt mere dot syntax. Det førnævnte kunne så omskrives til dette:

this["byListItem"+i]._y = this["byListItem"+i-1]._y + this["byListItem"+i]._height;

eller endnu nemmere:

newItem = "byListItem"+i;
this[newItem]._y = this["byListItem"+i-1]._y + this[newItem]._height;

og igen:

lastItem = "byListItem"+i-1;
newItem = "byListItem"+i;
this[newItem]._y = this[lastItem]._y + this[newItem]._height;

Det bliver pludselig lidt mere overskueligt :0)

Og tak for point...

mvh
paask
Avatar billede jerving Nybegynder
26. november 2002 - 12:50 #4
Du har helt ret min kode er nu langt mere overskuelig m. brug af [], frem for alle mine parenteser og eval.

1000 tak for hjælpen :o)

Med venlig hilsen

Jerving
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