Avatar billede Slettet bruger
09. december 2007 - 15:28 Der er 3 kommentarer og
2 løsninger

Listener - hvordan refereres til andre variabler (AS2)?

Hej eksperter.
Jeg har nogle indtastningsfelter, dybt inde i nogle movieclips.
Hvis der ændres i felterne, skal variablen "pinned" sættes "true" (p.t. tracer den bare).
Problemet er blot, den tracer "undefined", uanset hvad jeg gør - og det HVER GANG, jeg forsøger at referere fra et objekt (listeners, XML-objekter og whatever).
Hvis jeg tracer "this", returneres [OBJECT OBJECT], men hvordan pokker refererer jeg til andre ting? Og hvorfor gør det knuder?

stop();
var myListener:Object = new Object();
myListener.onKeyDown = function () {
  // Hvorfor kan jeg ingenting herindefra?
  trace(this._parent._parent._parent._parent._parent.pinned);
}
Key.addListener(myListener);
Avatar billede mat Nybegynder
09. december 2007 - 15:56 #1
"this" refererer til listener objektet, som ikke har en parent. Hvis du fjerner "this" refererer parent til det movieclip, der indlejrer dit movieclip med dit listener objekt.

Så prøv uden "this".

mvh mat
Avatar billede barklund Nybegynder
09. december 2007 - 15:59 #2
ActionScript er ret tricky med hensyn til "aktiverende scope" og "definerende scope". Hvis du ikke skriver this foran dine variabler i funktion, evalueres de i definerende scope (det scope hvor funktion blev defineret). Hvis du skriver this foran evalueres de i aktiverende scope (scope af det objekt, hvorpå funktionen kaldes).
Avatar billede Slettet bruger
09. december 2007 - 23:27 #3
Jamen minsandten...
Tusind tak, begge to - for løsning og forklaring.
Vil I begge ha' point, så smid gerne svar.

Mvh. Anders
Avatar billede mat Nybegynder
10. december 2007 - 11:15 #4
aight
Avatar billede barklund Nybegynder
10. december 2007 - 11:18 #5
Alright ;)
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

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