09. december 2007 - 15:28Der 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);
"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.
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).
Synes godt om
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.
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.