Avatar billede jokkejensen Novice
25. januar 2006 - 19:10 Der er 11 kommentarer og
1 løsning

Flash. Sætte onrelase i en iteration på en knappe

Hey..

Jeg roder lidt rundt i flash, så er det ikke en behjælpelig sjæl der vil fortælle mig hvordan jeg giver en knappe en onrelease event..

Jeg dublikerer et movieclip der hedder link_mc .. alt efter antal poster i et xml ark.. i dette movieclip ligger der en knap.. link_btn .. denne skal have forskellige events... Jeg ved ikke lige hvordan man ellers skulle lave det:

while (i < nodeCount)
              {
                  i++;
                  duplicateMovieClip("link_mc", "link_mc" + i, i);
                  setProperty("link_mc" + i, _x, _root.link_mc._x * i);
                  trace(_root.link_mc._x * i);
                 
                  link_mc+i.link_btn.onRelease = funktion()
                  {
                      if(loadNumber != i)
                      loadNumer = i;
                     
                      imgSlide();
                  }                 
               
              }


Det er selvfølgeligt denne linie der driller :
link_mc+i.link_btn.onRelease = funktion()

jeg kan ikke sige link_mc+i her.. men hvordan skal jeg ellers ramme netop denne knap ?

Mit problem er at jeg laver de her knapper, alt efter hvilken man klikker på skal den sætte loadNumer til indexet på knappen,. og køre imgSlide .. skal det gribes anderledes an ?

På forhånd tak
Jacob JEnsen
Avatar billede webt Nybegynder
25. januar 2006 - 19:24 #1
hvis den ligger i root kan du fx bruge _root['link_mc'+i]; this[] kan bruges på samme måde hvis den ligger i samme mc.

Mvh
Martin
Avatar billede jokkejensen Novice
25. januar 2006 - 19:25 #2
århh gider du smide det ind i mit eksempel.. de ligger i roden..

Er ved at lave et flash galleri til vores cms system.. så er ikke vildt meget inde i det :)
Avatar billede webt Nybegynder
25. januar 2006 - 19:33 #3
ja det gør jeg da:

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].link_btn.onRelease = function() {
        if (loadNumber != i) {
            loadNumer = i;
        }
        imgSlide();
    };
}

sådan burde virke
Mvh
Martin
Avatar billede jokkejensen Novice
25. januar 2006 - 19:34 #4
okay det virker ikke helt lortet "fryser" men sikkert en af mine utallige fejl..

kigger på det..

1000 tak skal du ha..

smider du et svar :)
Avatar billede webt Nybegynder
25. januar 2006 - 19:36 #5
Lyder som om løkken kører uendeligt

Her kommer et svar ind til videre hvis det går helt galt så skriv lige igen så tager jeg gerne en kigger :)

Mvh
Martin
Avatar billede jokkejensen Novice
25. januar 2006 - 19:49 #6
ahh du glemte et B i loadNumber..

Men...

hvis jeg udskriver LoadNumber onrelease er den altid 4 ... why ?

Mvh
Avatar billede jokkejensen Novice
25. januar 2006 - 19:52 #7
okay.. mig der kludre i det.. ik tag dig af det spm...
Avatar billede jokkejensen Novice
25. januar 2006 - 19:57 #8
nej alligevel ikke..

jeg har en dropdown liste (dynGo)... som har en event:

listenerObject = new Object();
listenerObject.change = function(eventObject) {
    _parent.goToImage();
};
dynGo.addEventListener("change", listenerObject);


goToImage ser sådan her ud :

function goToImage() {
    if (loadNumber != this.man_mc.dynGo.getSelectedItem().label) {
        loadNumber = this.man_mc.dynGo.getSelectedItem().label;
        imgSlide();
    }
}

Der ændrer jeg loadNumber til det valgte i listen, og kører imgSlide()...

og det virker fint..

Så det andet burde vel også være korrekt ?

Ved godt der er svær/umuligt for dig at vide hvad jeg fabler om.. men spørg endeligt løs hvis du ikke har givet helt op :)
Avatar billede jokkejensen Novice
25. januar 2006 - 20:01 #9
_root['link_mc'+i].link_btn.onRelease = function() {
      testInteger = i;
      trace(testInteger);
     
    };

Den her udskriver også altid 4.. det sidste i iterationen :(.. er det fordi at link_btn bliver overskrevet på dem alle... fordi den hedder det samme ?..
Avatar billede kragekjaer Praktikant
25. januar 2006 - 21:49 #10
HAr lidt til drengene: Kan skrives lidt pænere:

while (i<nodeCount) {
    i++;
    mc=duplicateMovieClip("link_mc", "link_mc"+i, i);
    mc._x = mc._x*i;
    mc.link_btn.onRelease = function() {
        if (loadNumber != i) {
            loadNumer = i;
        }
        imgSlide();
    };
}
Avatar billede kragekjaer Praktikant
25. januar 2006 - 21:55 #11
burde være

var mc:Movieclip=duplicateMovieClip("link_mc", "link_mc"+i, i);
Avatar billede jokkejensen Novice
26. januar 2006 - 09:37 #12
Det virker nu ikke kragekjaer ...

Men jeg er også ligeglad med om det er smart.. det skal bare virke :)

http://www.eksperten.dk/spm/682813
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