Avatar billede apache999 Nybegynder
01. september 2005 - 22:31 Der er 3 kommentarer og
1 løsning

scope-problemer AS 2.0

Jeg har lidt problemer med noget scope & setInterval.

Har noget i retning af følgende inde i en klasse:

button_mc.onPress = function() {
  var sInterval:Number = setInterval(myFunction,50);
  private function myFunction():Void {
    if(det ene) {
      //gør noget
    } else {
      clearInterval(sInterval);
    }
  }
}

Det virker fint, og funktionen bliver afsluttet, når den skal. Problemet er bare, at jeg også godt vil kunne afslutte myFunction med noget i retning af følgende kode, også i denne klasse:

button_mc.onRelease = function() {
  clearInterval(sInterval);
}

Mit spørgsmål er, hvor jeg skal placere myFunction og sInterval for at begge ting skal kunne lade sig gøre. Jeg synes efterhånden jeg har prøvet alt andet end at gøre sInterval _global, for det synes jeg ikke er så fedt.

Gode råd modtages med tak.
Avatar billede barklund Nybegynder
03. september 2005 - 15:46 #1
Det er bestemt ikke nogen form for nydelig AS2, men blot AS1 pakket ind i en klasse.

Ideelt set burde din knap have sin egen klasse, men alternativt kan du tildele den en press-funktion fra den omliggende klasse via Delegate:

private var interval:Number;
function ... () {
    button_mc.onPress = mx.utils.Delegate.create(this, buttonOnPress);
}
function buttonOnPress():Void {
    interval = setInterval(this, "buttonInterval", 50);
}
function buttonInterval():Void {
    if (det ene) {
        // gør noget
    } else {
        clearInterval(interval);
    }
}

Så er det straks nydeligere as2, og så kaldes alle funktioner med den omliggende klasse som scope.

--
Morten Barklund
Avatar billede apache999 Nybegynder
04. september 2005 - 20:07 #2
Mange tak for det.

Og også for kritikken - er nogen gange lidt for doven, og klassen er ved at være så stor, at jeg burde dele den op. Men det blev den næstbedste løsning, der vandt i denne omgang.

Læg et svar, hvis du vil ha' point.
Avatar billede barklund Nybegynder
04. september 2005 - 21:06 #3
Finfin - Delegate er vigtig til events og listener-relaterede ting og sager :)
Avatar billede barklund Nybegynder
04. september 2005 - 22:36 #4
Tark for points - håber du kommer videre med det og sørger for at få fordelt dine klasser fornuftigt og ikke bare lave en stor klasse fyldt med AS1 :)
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