Avatar billede maqhem Nybegynder
07. februar 2005 - 21:22 Der er 10 kommentarer og
1 løsning

Kan nogle se fejlen?

Hey...
Jeg prøver mig nu frem med setInterval, men kan ikke helt få en simpel if-funktion til at du.... Kan nogle monstro se fejlen - det er sikkert bare en lille, banal fejl, men jeg kan ikke helt selv finde den:

Enhed="0";
function obj(){
    Enhed++;
};
setInterval(obj,1000/2);
if(Enhed == 1){
    createEmptyMovieClip("object",1);
    with(object){
        _x=100;
        _y=100;
        beginFill(0xFF0000,100);
        lineTo(100,0);
        lineTo(100,100);
        lineTo(0,200);
        lineTo(0,0);
    }
};

På forhånd tak for hjælpen!
Avatar billede michael_stim Ekspert
07. februar 2005 - 21:27 #1
Uden at kunne noget som helst flash, så ville jeg gätte på at Enhed="0"; skal väre uden ""
Avatar billede maqhem Nybegynder
07. februar 2005 - 21:29 #2
Nej... Det er det ikke.... Det har noget at gøre med if-funktionen. Jeg syntes jeg har prøvet alle muligheder, men jeg kan ikke finde løsningen på mit problem.
Avatar billede maqhem Nybegynder
07. februar 2005 - 21:29 #3
Det skal jo lige siges, at jeg bruger Flash MX...
Avatar billede maqhem Nybegynder
07. februar 2005 - 21:40 #4
Nu har jeg også prøvet med:

function obj(){
    if(Enhed == ""){
        Enhed=1;
    }else{
        Enhed++;
    }
};
setInterval(obj,1000/2);
if(Enhed == 1){
    createEmptyMovieClip("object",1);
    with(object){
        _x=100;
        _y=100;
        beginFill(0xFF0000,100);
        lineTo(100,0);
        lineTo(100,100);
        lineTo(0,200);
        lineTo(0,0);
    }
};

Den tæller stadig udemærket, men linien "if(Enhed == 1)" duer vidst stadig ikke.
Avatar billede mat Nybegynder
07. februar 2005 - 22:26 #5
For det første er det noget ævl at initiere en variabel med værdien "0" og derefter prøve at inkrementere den. Det virker fordi flash er nådig, men man kan altså ikke inkrementere en streng.

I dit andet eksempel sammenligner du variablen "Enhed" med en tom streng (""). Er den det? Eller er den undefined? Eller er den "0"?

Hvis linien "if (Enhed == 1)" ikke "duer", så er det vel fordi "Enhed" ikke har værdien 1?

mvh mat
Avatar billede barklund Nybegynder
08. februar 2005 - 01:20 #6
Og derudover kører din if ikke i din setInterval funktion. Og hvad vil du egentlig overhovedet? Vente et halvt sekund og så tegne en firkant? For er det bare det, så skriv dog blot:

function tegnSåDenFirkant(){
    clearInterval(mit_interval);
    with(_root.createEmptyMovieClip("object",1)){
        _x=100;
        _y=100;
        beginFill(0xFF0000,100);
        lineTo(100,0);
        lineTo(100,100);
        lineTo(0,200);
    }
};
var mit_interval = setInterval(tegnSåDenFirkant, 500);

Og så burde det spille...

--
Morten Barklund
Avatar billede maqhem Nybegynder
08. februar 2005 - 07:41 #7
Men hvad nu, hvis jeg vil lave en hel animation? Hvordan stiller jeg så det op? Altså med måske 25 billeder efter hinanden?
Avatar billede barklund Nybegynder
08. februar 2005 - 09:08 #8
Billeder? Altså firkanter? Jeg er ikke helt med - jeg rettede bare dit script til?
Avatar billede maqhem Nybegynder
08. februar 2005 - 13:54 #9
Jeg troede jo, at jeg kunne lave denne funktion:

Enhed="0";
function obj(){
    Enhed++;
};
setInterval(obj,1000/2);

Og så ville den tælle: 0, 1, 2, 3.... Hvert halve sekund. Så var min plan, at lave if-funktioner sådanher:

if(Enhed == 1){
    Lav en trekant
};
if(Enhed == 2){
  Lav en firkant
};
if(Enhed == 3){
    Lav en femkant
};
......

Men det fik jeg jo ligsom forklaret ret tydeligt, at det kunne jeg ikke. Men hvordan skulle jeg så kunne lave det med din funktion? Skriver jeg så:

function tegnSåDenTrekant(){
    clearInterval(mit_interval);
    Lav en trekant
    }
};
var mit_interval = setInterval(tegnSåDenTrekant, 1000/2);
function tegnSåDenFirkant(){
    clearInterval(mit_interval);
    Lav en firkant
    }
};
var mit_interval = setInterval(tegnSåDenFirkant, 1000/2);
function tegnSåDenFemkant(){
    clearInterval(mit_interval);
    Lav en femkant
    }
};
var mit_interval = setInterval(tegnSåDenFemkant, 1000/2);

?

Eller hvordan klarer jeg det?
Avatar billede barklund Nybegynder
08. februar 2005 - 16:40 #10
Selvfølgelig kan du det. Men hvem skal hele tiden 50 gange tegne en ny figur? :/

For det første: hvorfor sætter du en variabel, der skal bruges som en tæller, til "0"? Hvorfor skal det dog være en streng? Det er jo et tal?

For det andet: Du skal _stadig_ proppe dine if'er ind i den funktion, der kører hvert interval - du kan ikke lægge dem udenfor funktionen.

Hvis jeg virkelig skal pinde det helt ud for dig, så er det altså bare:

tæller = 0;
function tegnSåNoget(){
    clearInterval(mit_interval);
    switch(++tæller) {
    case 1:
        with(_root.createEmptyMovieClip("object",1)){
            _x=100;
            _y=100;
            beginFill(0xFF0000,100);
            lineTo(100,0);
            lineTo(100,100);
            lineTo(0,200);
        }
        break;
    case 2:
        // noget med en femkant...
        break;
    // øvrige cases her..
    }
};
var mit_interval = setInterval(tegnSåNoget, 500);

Nu har jeg godt nok brugt en switch inde i funktionen - kunne lige så nemt have været lavet med en if - switch ser bare lidt mere overskueligt ud..

Det er altså ikke rocket science - men selvfølgelig skal du have det script, som skal køre hvert halve sekund, inden i den funktion, der kører hvert halve sekund. :)

--
Morten Barklund
Avatar billede maqhem Nybegynder
25. april 2005 - 08:03 #11
Jeg fandt en anden måde at gøre det på... Ellers tak for hjælpen!

-- Lukket --
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