Avatar billede thulstrup Nybegynder
14. februar 2003 - 16:04 Der er 6 kommentarer og
1 løsning

problem med delete onEnterFrame

Jeg kan ikke få min funktion til at slette min onEnterFrame. Når jeg tracer den kan jeg se at "baggrund._width" og "targetX" bliver det samme. Hvad gør jeg galt?

function resize(targetX, targetY) {
    if (Math.round(baggrund._width) != targetX) {
        onEnterFrame = function () {
            diffX = baggrund._width-targetX;
            diffY = baggrund._height-targetY;
            baggrund._width -= diffX*.2;
            baggrund._height -= diffY*.2;
            trace(Math.round(baggrund._width)+"  "+targetX);
        };
    }
    if (Math.round(baggrund._width) == targetX) {
        delete this.onEnterFrame;
        trace("slet onEnterFrame");
    }
}
Avatar billede alexander_j Nybegynder
15. februar 2003 - 09:24 #1
Uden at vide alt for meget om det, så tror jeg at delete er beregnet på variabler (int, strings og arrays)!

Hvad er det du gerne vil? Vil du stoppe den function du har defineret? I så fald vil jeg foreslå en if-sætning!

Skriv lidt mere - jeg vil også gerne vide hvad det er der sker siden du mener at kunne se, at den ikke er slettet :-) lav gerne et link til et eksempel!
Avatar billede thulstrup Nybegynder
15. februar 2003 - 10:28 #2
delete kan godt bruges til at slette en onEnterFrame.

Jeg vil gerne optimere mit script så, der ikke bliver kørt noget unødvendigt kode ved hver onEnterFrame. Jeg har brugt en if-sætning.

Jeg kan se at den ikke bliver slette, fordi jeg tracer den.

Jeg prøver lige at forklare mig lidt bedre:
Scriptet er til at resize et movieclip. resize funktion kaldes f.eks. sådan her:
enEllerAndenKnap.onRelease = function() {
    resize(100, 75);
}
Når movieclippet så har de dimension som bliver sendt til funktionen, skal min onEnterFrame slettes, da den så ikke længere er nødvendig.
Avatar billede alexander_j Nybegynder
15. februar 2003 - 11:53 #3
prøv at ligge din if ind i onEnterFrame-funktionen! eks.:

function resize(targetX, targetY) {
  if (Math.round(baggrund._width) != targetX) {
      onEnterFrame = function () {
        diffX = baggrund._width-targetX;
        diffY = baggrund._height-targetY;
        baggrund._width -= diffX*.2;
        baggrund._height -= diffY*.2;
        trace(Math.round(baggrund._width)+"  "+targetX);
        if (Math.round(baggrund._width) == targetX) {
            delete this.onEnterFrame;
            trace("slet onEnterFrame");
        }
      }
  }
}

Prøvede selv med, da jeg ikke havde hele dit script:

this.onEnterFrame=function(){
    i++;
    if(i>10) delete this.onEnterFrame;
    trace("nummer "+i);
}

Det virkede fint
Avatar billede alexander_j Nybegynder
15. februar 2003 - 12:04 #4
Tror problemet ligger omkring dit 'this' tilføj det eventuelt i din definition af onEnterFrame-funktionen:
  this.onEnterFrame = function () { osv.

eller fjern det fra din delete:
  delete onEnterFrame; osv.

Eller prøv mit forslag i ovenstående indlæg!
Avatar billede thulstrup Nybegynder
15. februar 2003 - 12:24 #5
Kanon alexander_j! Det hjalp at ligge min if-sætning ind i min onEnterFrame-funktion. Bare kom med et svar.
Avatar billede alexander_j Nybegynder
15. februar 2003 - 12:48 #6
glad for at kunne hjælpe :-)
Avatar billede thulstrup Nybegynder
15. februar 2003 - 12:51 #7
Tak for hjælpen!
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