Avatar billede jokkejensen Novice
26. januar 2006 - 09:34 Der er 8 kommentarer og
1 løsning

Flash. Problemer med onrelease event på dynamisk genereret button

Hej..

Jeg har et MC jeg kopiere alt efter hvor mange noder jeg har i et xml ark. det skal bruges til navigation i et billedegalleri.

Jeg har følgende :

        i = 0;
        while (i<nodeCount) {
            i++;
            //creates a copy of link_mc
            duplicateMovieClip("link_mc", "link_mc"+i, i);
            //setting x coords
            _root["link_mc"+i]._x = _root.link_mc._x*i;
            //giving onrelease event
            _root['link_mc'+i].link_btn.onRelease = function() {
              testInteger = i;
              trace(testInteger);     
          };

Hvorfor returnerer testInteger altid sidste integer, uafhængigt af hvilken knap jeg trykker på. Ex har jeg 4 billeder i mit xml ark.. knapperne ligger sig fint ved siden af hinanden og i debug ændrer i sig fint men når jeg klikker på knappen skriver den ALTID 4.. Kan det være noget om at link_btn ikke ændrer navn ? og at den bliver overskrevet ?

På forhånd tak.
Jacob Jensen
Avatar billede _k Nybegynder
26. januar 2006 - 10:37 #1
Det skyldes at du i runtime har fået assignet en "global" variabel til en "lokal" funktion. En variabel der, når du eksekverer den i runtime altid vil referere til sidste gang den kørte.
Du skal i stedet specificere variablen for hvert enkelt onPress funktion. Noget i retning af:

            .....
            var k = _root["link_mc"+i];
            k.id = i;
            k._x = _root.link_mc._x*i;
            //giving onrelease event
            k["link_btn"].onRelease = function() {
              testInteger = this.id;
              trace(testInteger);   
          };
Avatar billede jokkejensen Novice
26. januar 2006 - 10:41 #2
hmm

        while (i<nodeCount)
        {
            i++;           
            duplicateMovieClip("link_mc", "link_mc"+i, i);           
            _root["link_mc"+i]._x = _root.link_mc._x*i;           
              var k = _root["link_mc"+i];
            k.id = i;
            k._x = _root.link_mc._x*i;
            //giving onrelease event
            k["link_btn"].onRelease = function() {
              testInteger = this.id;
              trace(testInteger);   
              };
        }

Den siger testInteger er undefined :(..
Avatar billede jokkejensen Novice
26. januar 2006 - 10:43 #3
skriver jeg k.id .. er den 4 igen. :(..

Øv... giver snart op.. sad også med det hele aftenen igår :)
Avatar billede jokkejensen Novice
26. januar 2006 - 10:53 #4
WEEE

        while (i<nodeCount)
        {
            i++;           
            duplicateMovieClip("link_mc", "link_mc"+i, i);                       
            _root["link_mc"+i]._x = _root.link_mc._x*i;
            _root["link_mc"+i].testInteger = i;
            _root['link_mc'+i].link_btn.onRelease = function() {
            trace(this._parent.testInteger);
            };
        }

Det virker..

Smid et svar - så får du lige points - 1000 tak for din tid !

/JJ
Avatar billede jokkejensen Novice
26. januar 2006 - 11:04 #5
hvis jeg har en button... og ligger et dynamisk tekst felt oven på.. hvorfor kan jeg så ikke klikke på den..

den løkke gennerere en række mc'r.. med en button i.. den button skulle gerne have noget text.. ex 1 2 3 4 ->

Men når jeg smider et textfelt oven på kommer der en anden cursor "den til at markere tekst" .. jeg kna ikke klikke :(
Avatar billede _k Nybegynder
26. januar 2006 - 11:30 #6
Du kan gøre dit tekstfelt ikke-selectable i property panelet eller med kode. Med kode er det: tekstfelt_navn.selctable = false;

Ellers nice at du har fået det til at virke. Forskellen på din og min kode er at jeg med stor sandsynlighed rammer lige forbi den rigtige sti. Men super at du har gennemskuet konceptet.
Avatar billede _k Nybegynder
26. januar 2006 - 11:31 #7
...og her er svaret så.
Avatar billede jokkejensen Novice
26. januar 2006 - 16:21 #8
takker ;)
Avatar billede _k Nybegynder
26. januar 2006 - 16:25 #9
...og det gør jeg også :)
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