Avatar billede 040471 Nybegynder
31. maj 2002 - 10:47 Der er 13 kommentarer og
1 løsning

"while" vil ikke som jeg vil

Jeg har her et lille script, som kopiere et movieclip ind på scenen et antal gange (bestemt af smantal) hvorefter movieclipét placeres på scenen, så de ikke ligger ovenpå hinanden, og til sidst sættes et tekstfelt i movieclip'et så det indeholder en variabel tekst. Kort sagt en "Menu-generator"

MEN afviklingen stopper ved linien "setProperty ("/knap" + num, _y, 50 * num);" og hvis jeg fjerner denne linie virker scriptet perfekt.

Kan nogen forklare hvorfor While loopet stopper, når jeg indsætter to gange SetPro.....????

-->
num = 1;
while (num <= smantal) {
    // Her kopieres det movie clip hvori den originale knap findes
    duplicateMovieClip ("/knapmenu", "knap" + num, num);
    // Her flyttes knappens X og Y position så alle knapperne ikke står lige over hinanden
    setProperty ("/knap" + num, _x, (198 * num) - 150);
    setProperty ("/knap" + num, _y, 50 * num);
    // Her skrives variabel teksten ind på knappen
    set ("/knap" + num + ":knap_tekst", eval("knap_tekst" + num));
    num = num + 1;
}
stop ();
<--

mvh
040471
Avatar billede pixelpaw Nybegynder
31. maj 2002 - 11:30 #1
hvor sætter du smantal?
Avatar billede hoejrup Nybegynder
31. maj 2002 - 11:34 #2
num = 1;
while (num <= smantal) {
    // Her kopieres det movie clip hvori den originale knap findes
    duplicateMovieClip ("/knapmenu", "knap" + num, num);
    // Her flyttes knappens X og Y position så alle knapperne ikke står lige over hinanden
    setProperty ("knap" + num, _x, (198 * num) - 150);
    setProperty ("knap" + num, _y, 50 * num);
    // Her skrives variabel teksten ind på knappen
    set ("/knap" + num + ":knap_tekst", eval("knap_tekst" + num));
    num = num + 1;
}

/per
Avatar billede hoejrup Nybegynder
31. maj 2002 - 11:40 #3
num = 1;
while (num <= smantal) {
    // Her kopieres det movie clip hvori den originale knap findes
    _root.knapmenu.duplicateMovieClip ("knap" + num, num);
    // Her flyttes knappens X og Y position så alle knapperne ikke står lige over hinanden
    _root["knap" + num]._x = (198 * num) - 150;
    _root["knap" + num]._y = 50 * num;
    // Her skrives variabel teksten ind på knappen
    set ("knap" + num + ":knap_tekst", eval("knap_tekst" + num));
    num = num + 1;
}

/per

/per
Avatar billede pixelpaw Nybegynder
31. maj 2002 - 11:41 #4
setProperty ("knap" + num, _y, 50 * num);
kan du skrive om til
_root["knap"+num]._y = 50*num;
Avatar billede hoejrup Nybegynder
31. maj 2002 - 11:44 #5
set ("knap" + num + ":knap_tekst", eval("knap_tekst" + num));

Skal sikkert se således ud:

_root["knap" + num].knap_tekst = eval("knap_tekst" + num);

/per
Avatar billede hoejrup Nybegynder
31. maj 2002 - 11:45 #6
knap_tekst er så dit navn på tekstfeltet i dit mc.

/per
Avatar billede hoejrup Nybegynder
31. maj 2002 - 11:50 #7
Samtlige ændringer:

num = 1;
while (num <= smantal) {
    // Her kopieres det movie clip hvori den originale knap findes
    _root.knapmenu.duplicateMovieClip ("knap" + num, num);
    // Her flyttes knappens X og Y position så alle knapperne ikke står lige over hinanden
    _root["knap" + num]._x = (198 * num) - 150;
    _root["knap" + num]._y = 50 * num;
    // Her skrives variabel teksten ind på knappen
    _root["knap" + num].knap_tekst = _root.knap_tekst[num];
    num = num + 1;
}

Du kan lave teksten som en array i hoved filmen:

knap_tekst = new Array();
knap_tekst[1] = "Test1";
knap_tekst[2] = "Test2";

osv.

/per
Avatar billede 040471 Nybegynder
31. maj 2002 - 13:52 #8
Hej per, tak for dine kommentarer, men nu har jeg ændret koden til denne:

num = 1;
while (num <= smantal) {
    trace ("num" + num + "sm" + smantal);
    duplicateMovieClip ("/knapmenu", "knap"+num, num);
    _root["knap"+num].knap_tekst = _root["knap_tekst"+num];
    _root["knap"+num]._y = 50*num;
    _root["knap"+num]._x = 100;
    num = num+1;
}
trace ("num" + num + "sm" + smantal);
stop ();

** og jeg har stadigt samme underlige fejl, hvis jeg sletter den linie, hvori _x sættes virker loopet korrekt, og laver det antal knapper jeg skal have iht. variablerne, (som kommer fra en .txt fil) men med denne kodelinie kommer der kun en knap, som er med den rigtige tekst og er placeret korekt. Men kun en knap, selvom der skulle komme 4 - Jeg har indsat to trace, og i den sidste står der num2sm4 - altså stopper FLASH loopet selvom num kun er 2 og smantal er 4 -

det fatter jeg ikke hvorfor den gør.

PS: hvis du kommer med en ide, så lav den lige som et svar, så jeg kan belønne dig for dine ellers gode svar, selvom de ikkehar løst mit problem.
Avatar billede barklund Nybegynder
31. maj 2002 - 13:59 #9
Lav det som en for-løkke - det er jo alligevel oplagt... måske løser det oven i fejlen:

for (num = 1; num <= smantal; num++) {
    trace ("looping with num = " + num + ", sm = " + smantal);
    _root.knapmenu.duplicateMovieClip("knap"+num, num);
    _root["knap"+num].knap_tekst = _root["knap_tekst"+num];
    _root["knap"+num]._y = 50*num;
    _root["knap"+num]._x = 100;
}
stop ();

Men hvis det stadig ikke virker, så prøv lige at fortælle, hvad følgende trace giver (placeret for eksempel inden løkken)

trace("size is "+_root.knapmenu.getBytesTotal());

For hvis din movieclip består af mange bytes, så kan den godt have problemer med at sætte placeringen få millisekunder efter, at det er duplikeret ud...

Prøv lige...
Avatar billede hoejrup Nybegynder
31. maj 2002 - 14:24 #11
knaptekst = new Array();
knaptekst[1] = "Test1";
knaptekst[2] = "Test2";
knaptekst[3] = "Test3";
knaptekst[4] = "Test4";
smantal = 4;
num = 1;
while (num<=smantal) {
    _root.knapmenu.duplicateMovieClip("knap"+num, num);
    _root["knap"+num].knapt = knaptekst[num];
    _root["knap"+num]._y = 50*num;
    _root["knap"+num]._x = 100;
    num++;
}
stop ();


/per
Avatar billede hoejrup Nybegynder
31. maj 2002 - 14:25 #12
Velbekomme! Så skulle din løsning være på plads i løbet af kort tid. :o)

/per
Avatar billede 040471 Nybegynder
31. maj 2002 - 15:37 #13
Her har du dine velfortjente point, tak for hjælpen, jeg håber at kunne gøre gengæld en anden gang.

040471

PS: det bliver en rigtigt fed dynamisk menu, som genereres ved hjælp af en .txt eller .aps fil, og derfor er meget let at ændre o.l.
Avatar billede hoejrup Nybegynder
31. maj 2002 - 15:41 #14
Velbekomme!

/per
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