Avatar billede nattevagten Nybegynder
30. oktober 2002 - 23:45 Der er 15 kommentarer og
1 løsning

onPress = function() på movieClip

// make link
    duplicateMovieClip(_root.mcUserList.mcSingleUser, "mcSingleUserClick"+i, i);

    setProperty("_root.mcUserList.mcSingleUserClick"+i, _width, 100);
    setProperty("_root.mcUserList.mcSingleUserClick"+i, _height, 20);
    setProperty("_root.mcUserList.mcSingleUserClick"+i, _x, 0);
    setProperty("_root.mcUserList.mcSingleUserClick"+i, _y, (6*i)+9);
    setProperty("_root.mcUserList.mcSingleUserClick"+i, _alpha, 80);
    var p = userList[i];
        _root.mcUserList["mcSingleUserClick"+i].onPress = function() {
            trace("onPress called");
            var to = p;
            var from = -1;
            _root.privateMessageWindow.display(to, from);
            _root.privateMessageWindow._x = 15;
            _root.privateMessageWindow._y = 15;
            _root.privateMessageWindow._alpha = 80;
            _root.privateMessageWindow.TO = (to);
            _root.privateMessageWindow.FROM = (from);
            _root.privateMessageWindow.gotoAndStop(2);
            trace("to::"+to);
            trace("from::"+from);
        };

Ovenstående kode kører inde i en for-løkke. Mit problem er at p ikke ændre sig i onPress funktionen afhængig af userList[i]
Hvordan løser jeg dette?
Avatar billede schioeth Nybegynder
31. oktober 2002 - 00:50 #1
hvad giver en trace(p) dig ?

-schioeth
Avatar billede nattevagten Nybegynder
31. oktober 2002 - 08:03 #2
trace(p) giver mig kun den største(sidste) værdi.
Avatar billede barklund Nybegynder
31. oktober 2002 - 10:57 #3
indholdet af din onPress funktion bliver jo først udført, når du trykker på knappen. Og knap-trykket sker fra det movieclip, som funktionen bliver defineret på... Derfor kender funktion ikke værdien af "p" dengang funktionen blev oprettet, men det kan den nemt komme til.

I følgende kode har jeg komprimeret dit script en anelse ved at benytte, at duplicateMovieClip() returnerer en reference til det nye movieclip:

m = duplicateMovieClip(_root.mcUserList.mcSingleUser, "mcSingleUserClick"+i, i);

m._width = 100;
m._height = 20;
m._x = 0;
m._y = (6*i)+9;
m._alpha = 80;
m.p = userList[i];
m.msg = _root.privateMessageWindow;
m..onPress = function() {
    trace("onPress called");
    var to = this.p;
    var from = -1;
    this.msg.display(to, from);
    this.msg._x = 15;
    this.msg._y = 15;
    this.msg._alpha = 80;
    this.msg.TO = (to);
    this.msg.FROM = (from);
    this.msg.gotoAndStop(2);
    trace("to::"+to);
    trace("from::"+from);
};

Det burde virke...

Du bør også se at skille dig af med den dårlige vane at bruge flash4-syntax (setProperty) i flash mx - det er tungere og langsommere og sværere at læse... :o)

/Barklund
Avatar billede barklund Nybegynder
31. oktober 2002 - 11:00 #4
Hov - det er for mange prikker ved "m..onPress", der skal selvfølgelig kun være ét punktum...

I denne chat (som jeg gætter på det er), hvordan styrer du synkroniseringen til deandre klienteer? XMLSocket?
Avatar billede nattevagten Nybegynder
31. oktober 2002 - 11:33 #5
Hvordan får jeg instansieret m?

Ja - Synkroniseringen til de andre klienter foregår via XMLSocket.
SetProperty har jeg fra Flash-Hjælpen ;-(
Avatar billede barklund Nybegynder
31. oktober 2002 - 12:16 #6
Se min kode... står der ikke "m = " øverst? :o)

duplicateMovieClip returnerer nemlig en reference til det nye movieclip og denne gemmes i m...
Avatar billede nattevagten Nybegynder
31. oktober 2002 - 12:20 #7
Hmm - så forstår jeg det ikke.
Jeg får nemlig ikke movieClipet frem.
;-(
Avatar billede barklund Nybegynder
31. oktober 2002 - 12:24 #8
gør du ikke? så prøv explicit efter duplicate at skrive:

m = _root.mcUserList["mcSingleUserClick"+i];

Så burde det virke :o)
Avatar billede nattevagten Nybegynder
31. oktober 2002 - 12:36 #9
Ja - så kommer movieClipet frem.
Men klikker jeg sker der desværre intet!
Avatar billede barklund Nybegynder
31. oktober 2002 - 12:47 #10
Og du har fjernet det ekstra "."? prøv istedet at skrive:

duplicateMovieClip(_root.mcUserList.mcSingleUser, "mcSingleUserClick"+i, i);
m = _root.mcUserList["mcSingleUserClick"+i];
m._width = 100;
m._height = 20;
m._x = 0;
m._y = (6*i)+9;
m._alpha = 80;
m.p = userList[i];
m.msg = _root.privateMessageWindow;
m.onPress = function() {
    trace("onPress called");
    var to = this.p;
    var from = -1;
    this.msg.display(to, from);
    this.msg._x = 15;
    this.msg._y = 15;
    this.msg._alpha = 80;
    ?this.msg.TO = (to);
    ?this.msg.FROM = (from);
    this.msg.gotoAndStop(2);
    ?trace("to::"+to);
?    trace("from::"+from);
};
trace("movieclip: "+m+", onPress: "+typeof m.onPress);


Nu sørger du vel for at eksportere til FlashMX ikke? Og altså ikke flash5?
Avatar billede barklund Nybegynder
31. oktober 2002 - 12:50 #11
For i flash5 returnerer duplicate ikke en ref til nyt mc og onPress() virker ikke...
Avatar billede barklund Nybegynder
31. oktober 2002 - 12:51 #12
de 4 "?" ved jeg ikke helt hvor kom fra... :o) Drop dem bare igen...
Avatar billede nattevagten Nybegynder
31. oktober 2002 - 12:53 #13
Ser du nu virker alt som det skal! - Thank you!!
Vil du så ikke lige smide et svar, så du kan få lidt point?
Avatar billede barklund Nybegynder
31. oktober 2002 - 14:36 #14
Jo... hvor virker det? Jeg tilføjede jo bare en trace nederst? Hmm... Held og lykke :o)

Smid endelig et link til resultatet så vi kan se med - hvis du altså vil lade os det...
Avatar billede nattevagten Nybegynder
31. oktober 2002 - 16:31 #15
Du fjernede altså osse m = duplicateMovieClip.........

Jeg vil gerne gi' et link, så snart jeg får sat det (Java VM) op på en offentlig server. Jeg har nemlig ikke selv mulighed (desværre) for offentliggøre mine egne maskiner (kabelmodem).
Avatar billede barklund Nybegynder
31. oktober 2002 - 16:44 #16
ja, jeg fjernede at m blev instantieret ved duplicate, for du beskrev, at det ikke virkede...

Det kan være det, der gjorde udslaget selvfølgelig...
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