Avatar billede wedia Nybegynder
13. februar 2007 - 11:03 Der er 1 kommentar og
1 løsning

funktion kan kun bruges en gang ?

Hej eksperter

jeg har dette script :

var aTotal:Number = 0;
var tTotal:Number = 0;
var pTotal:Number = 0;
var rTotal:Number = 0

var MyStatus1:Boolean = false;
var MyStatus2:Boolean = false;
var MyStatus3:Boolean = false;
var MyStatus4:Boolean = false;
var type1:String = "a";
var type1:String = "t";
var type1:String = "p";
var type1:String = "r";




_root.tjek1.t1.onRelease = t1func1;
_root.tjek2.t1.onRelease = t1func2;
_root.tjek3.t1.onRelease = t1func3;
_root.tjek4.t1.onRelease = t1func4;

_root.tjek1.t2.onRelease = t2func1;
_root.tjek2.t2.onRelease = t2func2;
_root.tjek3.t2.onRelease = t2func3;
_root.tjek4.t2.onRelease = t2func4;
   
    function Status(type){
    switch(type){
    case "a":
    _root.MyStatus1 = true;
    break;
    case "b":
    _root.MyStatus2 = true;
    break;
    case "c":
    _root.MyStatus3 = true;
    break;
    case "d":
    _root.MyStatus4 = true;
    break;
    }
    }


    function mycount(type){
   
    switch(type){
    case "a":
    _root.aTotal = _root.aTotal + 4;
    break;
    case "t":
    _root.tTotal = _root.tTotal + 4;
    break;
    case "p":
    _root.pTotal = _root.pTotal + 4;
    break;
    case "r":
    _root.rTotal = _root.rTotal + 4;
    break;
    }
    }
   
    function mycount(type){
   
    switch(type){
    case "a":
    _root.aTotal = _root.aTotal + 4;
    break;
    case "t":
    _root.tTotal = _root.tTotal + 4;
    break;
    case "p":
    _root.pTotal = _root.pTotal + 4;
    break;
    case "r":
    _root.rTotal = _root.rTotal + 4;
    break;
    }
    }
       
    function mycountdel(type){
   
    switch(type){
    case "a":
    _root.aTotal = aTotal - 4;
    break;
    case "t":
    _root.tTotal = tTotal - 4;
    break;
    case "p":
    _root.pTotal = pTotal - 4;
    break;
    case "r":
    _root.rTotal = rTotal - 4;
    break;
    }
   
    }
    function t1func1(){
       
        switch(MyStatus1){
        case true:
        mycount2 = new mycount2(_root.type1)
        break;
        case false:
        mycount = new mycount(_root.type1)
        Status = new Status("a")
        break;
        }
   
    _root.tjek1.t1._visible = false;
    _root.tjek1.p2._visible = false;
    _root.tjek1.t2._visible = true;
    _root.tjek1.p1._visible = true;
    }
   
   
    function t1func2(){
       
        switch(MyStatus2){
        case true:
        mycount = new mycount(_root.type2)
        break;
        case false:
        mycount = new mycount(_root.type2)
        Status = new Status("b")
        break;
        }
    _root.tjek2.t1._visible = false;
    _root.tjek2.p2._visible = false;
    _root.tjek2.t2._visible = true;
    _root.tjek2.p1._visible = true;
    }
   
   
    function t1func3(){
       
        switch(MyStatus3){
        case true:
        mycount = new mycount(_root.type3)
        break;
        case false:
        mycount = new mycount(_root.type3)
        Status = new Status("c")
        break;
        }
    _root.tjek3.t1._visible = false;
    _root.tjek3.p2._visible = false;
    _root.tjek3.t2._visible = true;
    _root.tjek3.p1._visible = true;
    }
   
   
    function t1func4(){
       
        switch(MyStatus4){
        case true:
        mycount = new mycount(_root.type4)
        break;
        case false:
        mycount = new mycount(_root.type4)
        Status = new Status("d")
        break;
        }
   
    _root.tjek4.t1._visible = false;
    _root.tjek4.p2._visible = false;
    _root.tjek4.t2._visible = true;
    _root.tjek4.p1._visible = true;
    }
   
    function t2func1(){
        switch(MyStatus1){
        case true:
        mycountdel = new mycountdel(_root.type1)
        break;
        case false:
        Status = new Status("a")
        break;
        }
    _root.tjek1.t1._visible = true;
    _root.tjek1.p2._visible = true;
    _root.tjek1.t2._visible = false;
    _root.tjek1.p1._visible = false;
    }
   
    function t2func2(){
       
        switch(MyStatus2){
        case true:
        mycountdel = new mycountdel(_root.type2)
        break;
        case false:
        Status = new Status("b")
        break;
        }
   
    _root.tjek2.t1._visible = true;
    _root.tjek2.p2._visible = true;
    _root.tjek2.t2._visible = false;
    _root.tjek2.p1._visible = false;
    }
   
    function t2func3(){
       
        switch(MyStatus3){
        case true:
        mycountdel = new mycountdel(_root.type3)
        break;
        case false:
        Status = new Status("c")
        break;
        }
   
    _root.tjek3.t1._visible = true;
    _root.tjek3.p2._visible = true;
    _root.tjek3.t2._visible = false;
    _root.tjek3.p1._visible = false;
    }
   
    function t2func4(){
       
        switch(MyStatus4){
        case true:
        mycountdel = new mycountdel(_root.type4)
        break;
        case false:
        Status = new Status("d")
        break;
        }
       
    _root.tjek4.t1._visible = true;
    _root.tjek4.p2._visible = true;
    _root.tjek4.t2._visible = false;
    _root.tjek4.p1._visible = false;
    }
   
problemet jeg har er at hvis jeg klikker på en af de fire t1 knapper så virker den fint men hvis jeg trykker på den igen eller en af de ander 3 så sker der intet som om at de functioner de deles om kun kan bruges en gang ?

fla filen kan hentes her : www.kompetencer.eu/ft.fla
Avatar billede maqhem Nybegynder
13. februar 2007 - 13:21 #1
Okay, eksperten slettede lige en hel masse, jeg lige havde brugt rimelig lang tid på at skrive. Jeg prøver lige igen, blot en anelse hurtigere:

Nu får du altså den helt store tur:
1. Dit script er uoverskueligt og absolut slet ikke brugervenligt.
2. Det er svært at se, hvad du vil med dit script, da jeg samtidigt tror, du har lavet det alt for langt i forhold til, hvad det behøver.
3. Hvis du sætter en trace ind i Status, vil du se, at den kun kaldes én gang, så det er ikke bare noget, den lader som om.
Dette skyldes, at du overskriver mange af dine funktioner med variabler med samme navne (Status, mycount, mycountdel). Ændr navnene.
4. Det er, sjovt nok faktisk, lykkedes dig at implementere samme funktionsdefinition to gange lige efter hinanden. Slet denne.
5. Du initialiserer samme variabel (type1) fire gange lige efter hinanden dog med hver sin værdi. Denne går ikke an. Slet de tre af dem.
6. Mange af dine funktionaliteter kan proppes ind i lykker, så det bliver langt, langt kortere.
7. Lær dine funktioner at tage imod parametre, så vil du opdage en helt ny verden, der er meget nemmere at arbejde med.
8. Du må aldrig - ALDRIG, ALDRIG, ALDRIG - nogensinde navngive symboler med separerede AS-kommandoer så som this eller _root. Slet dette.
9. Du kan nemt slette _root rigtig mange af stederne i dit script, da denne som oftest kun benyttes til at ændre til det rette scope, eller array-opstilling af referance (_root["movieclip_nummer_" + num] som eksempel).
10. Du bør absolut fjerne alle dine klasserelaterede new's, da dit script intet med klasser har at gøre.
11. Du må og bør ikke fasttype texsfields på scenen. Slet dette.
12. Det ignoreres at sætte en variabel til udfaldet af en funktion, hvis denne ingen returneringsværdi har. Slet variablerne og blot kald funktionerne i stedet.

Og til sidst: Dit script kan ikke engang betale sig at kigge i for at finde fejl, da du har en hel del. Denne script (bør) gøre det samme som dit, efter hvad jeg har kunnet tyde:

aTotal = tTotal = pTotal = rTotal = 0;
MyStatus1 = MyStatus2 = MyStatus3 = MyStatus4 = true;
var numberToLetter:Array = new Array("a", "t", "p", "r");
for(var i:Number = new Number(1); i <= 4; i++) {
    _root["tjek" + i].t1._visible = _root["tjek" + i].t2._visible;
    _root["tjek" + i].t2._visible = !_root["tjek" + i].t1._visible;
    _root["tjek" + i].t1.onRelease = function() {
        _root["MyStatus" + this._parent._name.split("tjek")[1]] = false;
        _root[numberToLetter[Number(this._parent._name.split("tjek")[1]) - 1] + "Total"] = 4;
        this._visible = false;
        this._parent.t2._visible = !this._visible;
    }
    _root["tjek" + i].t2.onRelease = function() {
        _root["MyStatus" + this._parent._name.split("tjek")[1]] = true;
        _root[numberToLetter[Number(this._parent._name.split("tjek")[1]) - 1] + "Total"] = 0;
        this._visible = false;
        this._parent.t1._visible = !this._visible;
    }
}
Avatar billede maqhem Nybegynder
13. februar 2007 - 13:22 #2
13. Du kalder på et tidspunkt mycount2 - denne findes ikke ;)
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