Avatar billede davidchristensen Praktikant
23. februar 2002 - 22:13 Der er 57 kommentarer og
1 løsning

Trace OnClick vol. III

Hej venner.

Jeg er ved at forsøge på at lave en flashfilm, der skal virke sådan lidt semi-intelligent set fra brugerens side. Den skal vide hvilke knapper og hvilken vej brugeren har valgt gennem sitet - og dermed give indtryk af at filmen kan "se" brugeren, holder øje med ham og sender ham til steder i filmen, som giver udtryk for at filmen véd at han har været her før.

Projektet her går ud på at få alle knapper i filmen til at skrive en unik værdi i et array når man trykker på den, samt at detecte hvilke andre værdier der findes i dette array.

Jeg har været lidt på banen med dette spørgsmål - og har fået meget hjælp, men nu har jeg mistet overblikket. Nu kunne jeg godt ønske mig noget hjælp til at få trådende samlet.

Følgende scripts skulle tilsammen give hvad jeg har brug for:

Script på frame 1 i _root:

arrButtons = new Array();
iButtons = 0;

Script(s) på knapperne: (som skriver det nummer det MC som knappen ligger inde i, har fået af mig)

function addButton (_name.slice(4))) {
  arrButtonsPressed[0] = 30;
  iButtons++;
}

Og..

on (press) {

  answerList = [3,7,43,39];
  correctAnswers  = 0;

  for ( i = 0; i < answerList.length ; i++) {
    if (_root.arrButtons[i] != answerList[i]) {
        gotoAndStop(3);
        break;
    } else {
        correctAnswer ++;
        if (correctAnswers == answerList.length ) {
            gotoAndStop(4);
        }
    }
  }

}

..som detecter hvilke tal mit array består af (altså, hvilke knapper brugeren har trykket på gennem filmen (og som dermed detecter hvor brugeren har været.))

Spørgsmålet er nu:
Hvordan får jag sat de to scripts til knapperne sammen til eet script?

Og..

Er det script der sidder på første frame i _root rigtigt indsat(jeg tvivler ikke på pixelpaws kompetencer, men derimod på min egen evne til at forstå den ordenligt :) Jeg forestiller mig bare at der skulle stå noget á la OnEnterFrame eller sådannoget for at arrayet egentlig virker..?

Jeg har haft to spørgsmål igang her:
http://www.eksperten.dk/spm/175522 og
http://www.eksperten.dk/spm/176530

Jeg vil blive helt fantastik lykkelig, hvis der sidder nogle kloge hoveder derude et sted og vil hjælpe mig med at få dether lille projekt til at lykkes.

David :)
-
Avatar billede lingoman Nybegynder
23. februar 2002 - 22:16 #1
Hvorfor afslutter du ikke det tidligere spørgsmål inden du opretter det næste ?
Avatar billede lingoman Nybegynder
23. februar 2002 - 22:26 #2
Der sidder faktisk nogen...
Avatar billede davidchristensen Praktikant
23. februar 2002 - 22:34 #3
Jamn', det gør jeg så.. :)
Avatar billede davidchristensen Praktikant
23. februar 2002 - 22:36 #4
Sådan. Så, Geo.. Lad mig se dig trylle :D
Avatar billede lingoman Nybegynder
23. februar 2002 - 22:40 #5
Det var jo ikke meningen at du skulle acceptere http://www.eksperten.dk/spm/176530 før du havde fået det til at virke ?

Har du fået de test arrays jeg nævnte til at makke ret ?
Avatar billede lingoman Nybegynder
23. februar 2002 - 22:43 #6
Hvor ligger de actions med hhv

on (press) {

  answerList = [3,7,43,39];
  correctAnswers  = 0;

  for ( i = 0; i < answerList.length ; i++) {
    if (_root.arrButtons[i] != answerList[i]) {
        gotoAndStop(3);
        break;
    } else {
        correctAnswer ++;
        if (correctAnswers == answerList.length ) {
            gotoAndStop(4);
        }
    }
  }

}

og


function addButton (_name.slice(4))) {
  arrButtonsPressed[0] = 30;
  iButtons++;
}

i forhold til hinanden ?
Avatar billede lingoman Nybegynder
23. februar 2002 - 22:45 #7
hvordan er arrays arrButtons og arrButtonsPressed forskellige ?
Avatar billede lingoman Nybegynder
23. februar 2002 - 22:46 #8
3) hvad er det iButtons tæller ?
Avatar billede davidchristensen Praktikant
23. februar 2002 - 22:51 #9
Æhm, jamen umiddelbart skulle de jo ligge sammen, ikke?

function addButton (_name.slice(4))) {
  arrButtonsPressed[0] = 30;
  iButtons++;
}

..skulle føje knappens nummer til array når der bliver trykket på den og

on (press) {

  answerList = [3,7,43,39];
  correctAnswers  = 0;

  for ( i = 0; i < answerList.length ; i++) {
    if (_root.arrButtons[i] != answerList[i]) {
        gotoAndStop(3);
        break;
    } else {
        correctAnswer ++;
        if (correctAnswers == answerList.length ) {
            gotoAndStop(4);
        }
    }
  }

}

..skulle detecte hvilke andre knapper der har været trykket på tidligere og fører brugeren videre iht. arrayets værdier contra answerlist.

Jeg véd ikke hvorfor arr Buttons og arrButtons er Forskellige..(?) Det bør de vel egentlig ikke være..
Avatar billede lingoman Nybegynder
23. februar 2002 - 22:55 #10
Jeg har tjekket dit første spørgsmål og kan se hvad du har haft i tankerne, men det barklund gav dig som forklaring har du brugt som kode.. jeg sætter det sammen så det bliver samlet
Avatar billede davidchristensen Praktikant
23. februar 2002 - 22:56 #11
Basalt set, så skal scriptet på knappen:

1: Føje ny værdi til array når der trykkes på knappen

2: Tjekke hvilke værdier array består af, hvilken rækkefølge og fører brugeren videre iht. answerlist.

Jeg går ud fra at jeg kan ændre på answerlist som det passer mig, så forskellige værdier og rækkefølger skal være opfyldt før brugeren sendes videre..?
Avatar billede lingoman Nybegynder
23. februar 2002 - 22:57 #12
mens jeg skriver koden, afprøv lige at indsætte test arrays i første frame med nogle værdier du kender

fks. frame 1

_root.arrButtons = [3,7,43,39];  // dette bør føre dig videre til frame 4 da de alle er rigtige

derefter kan du afprøve

_root.arrButtons = [3,7,43,0];  // sidste er nu forkert. Derfor bør den gå til frame 3

Når du har bekræftet dette kan vi lave dine tilføjelser.
Avatar billede lingoman Nybegynder
23. februar 2002 - 22:59 #13
Hver knap kan have sin private answerlist. Er det nok ?
Avatar billede davidchristensen Praktikant
23. februar 2002 - 23:00 #14
Jeg er ikke helt sikker på du forstår hvad jeg egentlig mener, for jeg føler sådan at jeg sidder og vrøvler :)

Her er endnu en lille liste over dét jeg er ude efter..

1. Føj knappens værdi til array
2. Tjek om værdier jeg deffinere for hver knap findes array
3. Tjek om værdierne findes i den rækkefølge(r) jeg har deffineret dem i

(Det ville være fjong, hvis jeg kunne deffinere forskellige rækkefølger)
Avatar billede davidchristensen Praktikant
23. februar 2002 - 23:01 #15
Ja, det er nemlig helt okay! :) Det er også det jeg regnede med de havde..
Avatar billede lingoman Nybegynder
23. februar 2002 - 23:01 #16
ligger hver af de 30 knapper i sit eget MC med unikt instance navn

fks knap1,knap2, knap 3, ... , knap30 ?
Avatar billede lingoman Nybegynder
23. februar 2002 - 23:06 #17
2. Tjek om værdier jeg deffinere for hver knap findes array

gør punkt 3 ikke det ? Skal den også gå til frame 4 hvis knappens værdi findes i answerList, men på den forkerte plads ?
Avatar billede lingoman Nybegynder
23. februar 2002 - 23:10 #18
Tager en rygepause mens jeg afventer svar på mine spørgsmål, især dem fra 23/02-2002 22:57:28 og 23/02-2002 23:01:49 og den sidste
Avatar billede davidchristensen Praktikant
23. februar 2002 - 23:10 #19
Næ, jeg kan ikke få det til at virke.. Måske er det os' mig der er en nød.

Jeg har i 1. frame: arrButtons = (2,3,4);
iButtons = 0;

Og på knappen:
on (press) {


  answerList = [2,3,4];
  correctAnswers  = 0;

  for ( i = 0; i < answerList.length ; i++) {
    if (_root.arrButtons[i] != answerList[i]) {
        gotoAndStop(2);
        break;
    } else {
        correctAnswer ++;
        if (correctAnswers == answerList.length ) {
            gotoAndStop(5);
        }
    }
  }

}

Der sker ingenting når jeg trykker på knappen. Den står bare stille..
Kan jeg sende dig min .FLA?
Avatar billede davidchristensen Praktikant
23. februar 2002 - 23:18 #20
Ja, knapperne ligger i hver deres MC med navn. Men jeg kunne nu godt tænke mig at de blot havde numre.. Eks. 3, 8, 9 osv..

(Desuden kan der nemt blive mere end 30 knapper i denher film.. Jeg véd ikke lige hvor du har tallet fra? :)

Nej, der skal være forksel på om tallet findes i array, eller om det findes i en foruddeffineret rækkefølge. Hvis array består af 3,6,9 så skal destinationen være forskellig, hvis array var 6,9,3.

På den anden side, Geo, så dether med relative og absolutte arrays er måske ikke så nødvendig i første omgang.. Men når det en dag bliver nødvendigt, så bliver det også nødvendigt at kunne deffinere flere answerlist's for hver knap.
Avatar billede davidchristensen Praktikant
23. februar 2002 - 23:20 #21
Desuden, er det ikke ligegyldigt hvad knapperne hedder - hvis den hed "Peter" ville den vel også blive tilføjet i array, samtidigt med at jeg vil kunne deffinere den i answerlist?
Avatar billede lingoman Nybegynder
23. februar 2002 - 23:20 #22
Du kan godt sende fla'en men jeg laver det først i morgen.

indsæt dette i første frame

arrButtons = [2,3,4];
iButtons = 0;

Vi skal også have afklring på hvad du virklig ønsker!!

Er du klar over at sådan som du har opbygget knap actionen har brugeren INGEN mulighed for at korrigere en evt. fejl ?

hvis vi siger et den korrekte sekvens er [2,3,4], men brugeren kommer til at trykke fks. knap 1 først og opdager sin fejl. derefter trykkes der på 2,3,4 som er rigtige..men dette bliver tolket som [1,2,3,4] som er forkert!
Er det meningen ?
Avatar billede davidchristensen Praktikant
23. februar 2002 - 23:23 #23
Ham, Paask lavede en slice-funktion, så kun det 5. tal i knappens navn blev tilføjet - men det vil nu være det bedste hvis jeg kunne kalde knappen hvad jeg nu har lyst til og kalde den med samme navn i Answerlist.. :)
Avatar billede davidchristensen Praktikant
23. februar 2002 - 23:25 #24
Iøvrigt (lige en helt anden ting) er Colin Moocks hjemmeside ikke moocks.org? :)
Avatar billede davidchristensen Praktikant
23. februar 2002 - 23:26 #25
Næ, den var bare Moock.org :)
Avatar billede lingoman Nybegynder
23. februar 2002 - 23:29 #26
Der skal altså være 3 forskellige destinationer

1) knappens tal findes ikke i answerlist
2) knappens tal findes i answerlist men ikke i den rigtige plads
3) knappens tal finees i answerlist og på den rigtige plads i rækkefølgen

Hvilke frames skal den gotoAndStop() for hver af disse muligheder ?

Vi lader knappen få en variabel du kan justere enkeltvis så vi ikke behøver at følge nogen navngivnings konvention.
Avatar billede lingoman Nybegynder
23. februar 2002 - 23:31 #27
svar lige på de sidste par indlæg så vi kan komme i seng :)
Avatar billede lingoman Nybegynder
23. februar 2002 - 23:37 #28
Jeg går i seng nu men håber at du svarer på mine sidste spørgsmål og sender fla'en til mig så jeg kan lave det i morgen. sov godt!
geo@lingoman.dk
Avatar billede davidchristensen Praktikant
23. februar 2002 - 23:37 #29
Hvilke frames skal den gotoAndStop()for hver af disse muligheder ?

Æh, ikke helt forstået..? :)

Du behøver ikke at spekulere hvilke frames den skal gå til for hver af disse muligheder, det må jeg regne ud senere.. Men altså, eksempeltvis til frame 2, hvis 1 ikke findes i answerlist (fordi knap et vil føre til frame 2) - men kommer man tilbage til frame et og trykker på den igen, så bliver man dirrigeret til eks. frame 5.
Avatar billede lingoman Nybegynder
23. februar 2002 - 23:44 #30
Det må du hellere uddybe... det er noget af det vigtigste at få på plads.

sagen er at iButtons tæller videre uanset om svaret er korrekt eller forkert. OG iButtons er den der bestemmer hvor svaret havner!

Beskriv venligst med ord, skridt for skridt, hvad der bør ske i forskellige situationer. Så kan jeg godt skrive actionerne
mvh geo
Avatar billede davidchristensen Praktikant
24. februar 2002 - 01:21 #31
Kommentar fra lingoman
23/02-2002 23:29:34    Der skal altså være 3 forskellige destinationer

1) knappens tal findes ikke i answerlist
2) knappens tal findes i answerlist men ikke i den rigtige plads
3) knappens tal finees i answerlist og på den rigtige plads i rækkefølgen

Der skal faktisk være 4..
Også een hvor tallet findes i answerlist.. (Faktisk den vigtigeste)

Anyway. Dét jeg er ude efter er som sagt et script der kan detecte hvilke knapper brugeren har trykket på før.

Jeg forsøgte at lave en lille film til dig med 4 menupunkter, hvor du henholdvis kunne være under menupunktet 1. gang, du kunne stadigvæk være under menupunktet (når du trykkede på det samme menupunkt som du allerede var på) og du kunne være på menupunktet 2. gang. Det ville kræve 4x4x4 knapper at lave.

Jeg troede jeg kunne skride analytisk fremad og lave små grupper af frames på min timeline á 4 frames (et frame for hver menupunkt) og så lade knapperne der henvise til et frame i de øvrige grupper. Jeg lavede således en gruppe med fire frames for hvert 1.besøg af de fire menupunkter, en gruppe som du bliver henvist til, når du trykker på den samme knap/menupunkt som du allerede var på. og en gruppe for hver gang du besøgte menupunktet 2. gang. Men jeg ramlede så ind i et problem i den gruppe man bliver henvist til, når man trykker på den samme knap, som den man allerede står på, for her er du umuligt at sige hvor mange gange du allerede har været på under de øvrige menupunkter; medmindre jeg lavede endnu tre gruppe man bliver henvist til (henholdsvis efter hvor mange gange man har været på de øvrige menupunkter, hvilket vil føre til 4x(4x4)x4 kombinationsmuligheder.  Derfor vil det jo være rart med et script der kunne holde styr på dét :)

Har lige tænkt lidt..

Vi reducerer lidt på den lille liste over ting scriptet skal kunne holde styr på:

1) knappens tal/navn findes i answerlist x antal gange.
2) knappens tal/navn findes i answerlist og i en deffineret rækkefølge.
  (det skal her være muligt at deffinere flere "answerlists".)

Det kunne her være helt lækkert, hvis jeg kunne lære evt. at indsætte noget ekstra til nr.1, såsom hvis x < y og hvis jeg kan deffinere flere destinationer alt efter hvad x er .. Men i første omgang er det rigeligt, hvis jeg bare kan bruge x en enkelt gang.

Uha, det er lidt af et projekt dether.. Faktisk udspringer det lidt af en interesse for kunstig intelligens, og jeg tænkte nu om man ikke kan lave en lidt tillempet intelligens, som kan holde styr på hvilke knapper der har været trykket på i en flashfilm, og på den måde have mulighed for at lave en film, som brugeren vil føle lidt som "levende"..

Nåmen, godnat. Og, tak, Geo! :)

David
-
Avatar billede davidchristensen Praktikant
24. februar 2002 - 13:38 #32
Hej igen Geo..

Scriptet skal skrive navne/tal ned i et array, når der bliver trykket på knappen - og de skal tilføjes i den rækkefølge knapperne bliver trykket på. Man kan eksempeltvis have et array der hedder (5,9,4,5,2,9) hvor det samme tal godt kan stå opført flere gange.

Så langt så godt.

Derudover skal der være en trace-funktion i knappen, hvor vi så er kommet ind på en aswerlist, eller måske rettere en løsningsmængde.
Det er her det bliver lidt svært for mig at deffinere hvilke variabler der er nødvendige..

Jeg forestiller mig:
1) knappens tal/navn findes i answerlist x antal gange, GoTo and stop.
Her skal det på en måde være muligt at tilføje så mange answerlists,  knappenavne, ligninger og x værdier, som jeg har lyst til på denne måde: Hvis knap1 findes i answerlist 3 gange, så GoTo and stop. Hvis knap1 findes i answerlist 9 gange, så GoTo and stop et amdet sted. Derudover vil det jo være helt fjong hvis man kan bruge basal matematik her, så som If knap5 findes i answerlist < end 5 gange, så GoTo and Stop.

2) 2) knappens tal/navn findes i answerlist og i en deffineret rækkefølge.
  (det skal her være muligt at deffinere flere "answerlists".)Altså, lads os sige jeg her kan deffinere flere answerlist, og det her er rækkefølgen i de tal answerlist består af; altså, hvis answerlist er (6,8,3,9) eller (5,8,2,3) så GoTo and stop :)

Har du dig en dejlig dag ude i solskinsvejret? *S*

David
-
Avatar billede lingoman Nybegynder
24. februar 2002 - 15:47 #33
Når du siger gotoAndStop() er det så i selve MC'en som knappen befinder sig i, eller er det hovedfilmen der skal hoppes i ?
Ja, jeg har haft en dejlig dag med ungerne :)
Avatar billede davidchristensen Praktikant
24. februar 2002 - 16:02 #34
Det er selve hovedefilmen der skal hoppes rundt i. MC'et som knappen ligger i er i første omgang kun til for at kunne knappen et navn.

Jeg må selv finde ud af på et senere tidspunkt, hvordan jeg evt. laver en animeret knap integreret med den kode du nu sidder med..

Dejligt. Hvor gamle er de..ungerne? :)
Avatar billede davidchristensen Praktikant
24. februar 2002 - 16:03 #35
...MC'et som knappen ligger i er i første omgang kun til for at kunne GIVE knappen et navn..
Avatar billede lingoman Nybegynder
24. februar 2002 - 16:05 #36
3,7 og 8 år.

Så er det detfor der ikke skete noget igår.

Når det er hovedtidslinien der skal påvirkes hedder det

_root.gotoAndPlay(4);

Nå, men jeg går igang med resten.
Avatar billede lingoman Nybegynder
24. februar 2002 - 16:07 #37
Du vil altså ikke bruge dem i en MC senere ?
Det er ret vigtigt at vi har strukturen på plads..
Avatar billede davidchristensen Praktikant
24. februar 2002 - 16:08 #38
Det er jo rigtigt..
Avatar billede lingoman Nybegynder
24. februar 2002 - 16:11 #39
Vil du bruge dem inde fra et MC eller ej ?
Avatar billede davidchristensen Praktikant
24. februar 2002 - 16:11 #40
Æhm, nej umiddelbart ikke.. Det bliver min egen hovedpine i så fald.

Men jeg kan vel altid ændre og tilføje hvor jeg gerne vil have knappen skal gå hen, ikke? Arrayet skal blot være globalt.. Er det ikke muligt at lave det sådan?
Avatar billede davidchristensen Praktikant
24. februar 2002 - 16:15 #41
Jamen, jeg kan ikke lige gennemskue hvad der vil være det nemmeste for dig, for har jeg muligheden får både at bruge dem i et MC og på hovedelinien vil det jo være det bedste.

Men giver det dig nogle kvaler, så kalkulér med at de eneste MC'er der er, er dem knapperne selv ligger i på hovedlinien. :)
Avatar billede davidchristensen Praktikant
24. februar 2002 - 16:18 #42
Jf. din tidligere kode:

Og på knappen:
on (press) {


  answerList = [2,3,4];
  correctAnswers  = 0;

  for ( i = 0; i < answerList.length ; i++) {
    if (_root.arrButtons[i] != answerList[i]) {
        gotoAndStop(2);
        break;
    } else {
        correctAnswer ++;
        if (correctAnswers == answerList.length ) {
            gotoAndStop(5);
        }
    }
  }

}

..så vil det i så fald da kun være GoTo-stien jeg skal ændre på, alt efter hvor knappen ligger og hvad jeg vil have den til at afspille. Ikke?
Avatar billede lingoman Nybegynder
24. februar 2002 - 16:19 #43
Så laver jeg alle actionerne på et tomt MC som knapperne skal kalde hver gang der bliver klikket på en så det bliver uafhængigt af den øvrige struktur.
Hver knap får tildelt et navn du selv ændrer.
Jeg er dog lidt bange for at du ikke har gennemtænkt mulighederne.

Nu hvor du vil have flere answerlists per knap, hvad sker der i det øjeblik den ene answerlist giver 3 tilfælde af knappen, og en anden answerlist giver 5 eller 0 ? Hvor skal den så hen ?
Avatar billede lingoman Nybegynder
24. februar 2002 - 16:22 #44
on (press) {

              answerList = [2,3,4];
              correctAnswers  = 0;

              for ( i = 0; i < answerList.length ; i++) {
                  if (_root.arrButtons[i] != answerList[i]) {
                        _root.gotoAndStop(2);
                        break;
                  } else {
                        correctAnswer ++;
                        if (correctAnswers == answerList.length ) {
                            _root.gotoAndStop(5);
                        }
                  }
                }
}
Avatar billede davidchristensen Praktikant
24. februar 2002 - 16:31 #45
Du har nok ret i, at der kan opstå tilfælde, hvor de forkellige answerlists kan give et resultat, som vil skabe noget kludder, men umiddelbart vil jeg gemme dette problem til når jeg sidder med et stort stykke papir og laver sitemappet over den side jeg kunne tænke mig at afprøve dether på. Jeg må jo være sikker på at lave nogle answerlists, som ikke træder hinanden over tæerne..

Hvilke muligheder er det du er bange for jeg ikke har tænkt igennem? Jeg ser selv mange muligheder i dether - og kan ikke rumme dem allesammen i mit lille hovede, så jeg enkelt og præcist kan fortælle dig hvad det er hele pointen vil være.. Men det jeg søger her er et redskab (et script med deffinerbare værdier og variabler) som jeg kan lege lidt med og forhåbenligt finde ud af hvordan jeg strukturer et sådan site bedst muligt og hvilke answerlist jeg skal lave (og ikke lave), for at der ikke går kludder i det..
Avatar billede lingoman Nybegynder
24. februar 2002 - 16:33 #46
Jeg er i fuld gang og laver det så fleksibelt som jeg kan..
Avatar billede davidchristensen Praktikant
24. februar 2002 - 16:40 #47
Mangler der ikke et s i correctAnswer ++, så det staves på samme måde som if(corretAnswers == .. ? :)
Avatar billede davidchristensen Praktikant
24. februar 2002 - 16:41 #48
Det lyder godt.. :D
Avatar billede lingoman Nybegynder
24. februar 2002 - 16:42 #49
jo, det har du fuldstændig ret i ;)
Avatar billede davidchristensen Praktikant
24. februar 2002 - 16:44 #50
Jeg sidder virkelig og nærlæser din kode, så jeg forhåbenligt kan lære noget..
Avatar billede davidchristensen Praktikant
24. februar 2002 - 17:40 #51
Nu ser jeg lige at du skriver: "Så laver jeg alle actionerne på et tomt MC som knapperne skal kalde hver gang der bliver klikket på en så det bliver uafhængigt af den øvrige struktur."

Det er ihvertfald vigtigt her, at hver knap har sin egen answerlist - om så selve actionen('erne) ligger i et moviclip for sig selv, vil jo være godt, for så behøver man ikke at duplikerer det samme script over på alle knapper, dvs. datamængden jo bliver mindre.

Men jf. dit tidligere script har jeg da svært ved at se hvordan vi kan nøjes med kun at have det een gang i filmen, for hver knap skal jo ikke gå det samme sted hen..? :/
Avatar billede lingoman Nybegynder
24. februar 2002 - 17:56 #52
Det er der taget højde for ;))
Avatar billede lingoman Nybegynder
24. februar 2002 - 18:19 #53
//Lav et MC på hovedtidslinien og giv det instance navnet "actionMC" i instance panelet.
//Denne MC skal være til stede på hovedtidslinens frames lige fra den første frame
//med knapper til den sidste frame med knapperne.

//sæt denne action på actionMC

onClipEvent(load) {
  UserActionList = [];

  function addUserAction(knapID) {
  //Her gemmer vi alle resultater
  UserActionList.push(knapID);
  }

  function CheckUserActionListFor(knapID) {
    //hvor mange gange har brugeren klikket på knapID ?
  HvorMangeGange = findHowManyTimes(knapID,UserActionList);
  return HvorMangeGange;
  }

  function ErUserActionListLigMed( answerList ) {
    //sammenlign UserActionList med answerList
  UserActionListErRigtig = equalArrays (UserActionList, answerList );
  return UserActionListErRigtig;
  }

  function findHowManyTimes(findWhat,InWhichList) {
    //Denne funktion giver svar på hvor mange gange findwhat blev fundet i Array InWhichList
    var found = 0;
    for (var i = 0; i < InWhichList.length; i++) {
            if (InWhichList[i] == findWhat) {
                  found++ ;
            }
    }
  return found;
  }

  function equalArrays (array_1, array_2) {
    //Denne funktion giver svar på om array_1 og array_2 er identiske
    //svaret er enten true eller false

    for (var i = 0; i < array_1.length; i++) {
            if (array_1[i] != array_2[i]) {
                  return false ;
            }
    }
    return true ;

  }

  function searchArray( whichArray,searchElement) {

  //Denne funktion prøver at finde searchElement i Array whichArray
  //Hvis seachElement ikke findes i whichArray giver den svaret null
  //Ellers finder den indexpositionen , i, på den aller første seachElement der bliver fundet

    for (var i = 0; i < whichArray.length; i++) {
          if (whichArray[i]== searchElement) {
                  return i;
          }
    }
    return null;
  }

}


//Det var de funktioner som vi skal være i stand til at kalde fra vore knapper.
//Nu tager vi knap actionerne


on (release) {
            var knapID = 4; 
//  Her skal du selv finde på unikke navne eller tal til hver knap
            var answerList_1 = [2,3,4]; // Disse må kun indeholde gyldige knapID'er som elementer
            var answerList_2 = [1,3,4];
// dette eksempel har kun 2 answerLists,
//men du kan selv tilføje flere og indsætte andre tests

// Tilføj brugerens klik i Array "UserActionList" som actionMC holder styr på
            _root.actionMC.addUserAction(knapID);


//Lad os finde ud af hvor mange gange der er klikket på denne knap
            var antalKlik = _root.actionMC.CheckUserActionListFor(knapID)

//Er answerList_1 og UserActionList det samme? (svar true/false)
            svar_1 = _root.actionMC.ErUserActionListLigMed( answerList_1) ;

//Er answerList_2 og UserActionList det samme? (svar true/false)
            svar_2 = _root.actionMC.ErUserActionListLigMed( answerList_2) ;

//Nu gør vi et eller andet som er afhængig af de svar vi fik for oven

///////////////////////////////////////////////////////////
// Herfra kan du selv ændre actionen så hver knap gør noget forskelligt
///////////////////////////////////////////////////////////

//Hvis brugeren har klikket på denne knap 5 gange eller mere,
//så hop til frame 23 på hovedtidlinien
            if ( antalKlik >= 5) {
                _root.gotoAndStop(23);
            }


//Hvis answerlist_1 og brugerens valg er identiske
            if (svar_1) {
                  _root.gotoAndStop(4); 
//hop til frame 4 på maintimeline
              }


//Hvis answerlist_2 og brugerens valg er identiske
            if (svar_2) {
                  _root.gotoAndStop(10);  //hop til frame 10 på maintimeline
              }


//Hvis hverken answerlist_1 eller answerlist_2 stemte med brugerens valg
            if (!svar_1 && !svar_2) {
                  _root.gotoAndStop("Sorry"); 
//hop til frameLabel "Sorry" på maintimeline
              }


}

1) Alt dette forudsætter at du har navngivet movieClip instancet som "actionMC" og at det altid findes på maintimeline. 
2) Jeg har i den sidste if sætning antaget at du har et frame label som hedder "Sorry" på maintimeline som der hoppes til hvis hverken answerList_1 eller answerList_2 passer med UserActionList.

Håber at koden er kommenteret tilstrækkelig til at du selv kan ændre det senere.

mvh geo
Avatar billede lingoman Nybegynder
24. februar 2002 - 18:39 #54
Du kan eventuelt placere actionMC uden for det synlige stage område.
Koden er fleksibel nok til at vi kan tilføje andre if-else sætninger
HUSK! Hver knap skal have et UNIKT knapID.

Vi dropper iButtons og alt tidligere scripts
Avatar billede davidchristensen Praktikant
24. februar 2002 - 18:55 #55
Uh, det er smukt! Jeg må vist lige læse det igennem et par gange..

Tænk, et script som dether:
function CheckUserActionListFor(knapID) {
    //hvor mange gange har brugeren klikket på knapID ?
  HvorMangeGange = findHowManyTimes(knapID,UserActionList);
  return HvorMangeGange;
  }

..der er ikke et eneste tal indvolveret! Jeg syns' det er flot! Det er lige sådan et script, som dummies som mig kan lære af!

Tak skal du have, Geo. Du får dine hårdt tjente point. :)

David
-

PS. Lige en helt anden ting. Du kender tilfældigvis ikke nogen der vil leje et værelse ud? Jeg har lidt i tankerne at jeg må spørge Nikolaj også, da han og kæretsen vist overvejede dette.. Jeg kan bare ikke lige få fat på ham.. :)
Avatar billede lingoman Nybegynder
24. februar 2002 - 19:03 #56
Fy david! Den slags må vi hellere maile om! Der er jo privat :/

De kan godt være at der mangler "}" eller ";" hist og her men så må du råbe op.
Desuden vil jeg gerne hjælpe dig videre her hvis du skal have ændringer/tilføjelser så der er ikke brug for at oprette nye spørgsmål når du allerede har givet mig 150 point for dette :)
Avatar billede davidchristensen Praktikant
24. februar 2002 - 19:14 #57
Du  har ret.. Sorry.. :I

Tænk ikke så meget på pointene Geo. Du har jo brugt en frygtelig masse tid på dether; og det sætter jeg stor pris på, altså. :)

Men en anden ting er jo, at hvis jeg vil spørge om noget ad dether script, så er dette spørgsmål vel stedet at gøre det? Jeg får da ihvertfald fat i den rigtige person.. ;)

Jeg vil lave min matematikaflevering færdig og så gå igang med at se ordenligt på det derefter..

Endnu engang tak.
Avatar billede lingoman Nybegynder
24. februar 2002 - 19:16 #58
Mange linjer i actionerne for oven kan forkortes men det gør det også lidt svært at forstå.
Derfor har jeg med vilje brugt nogle ekstra...

Matematik! Må jeg ikke være MEEeeD :))
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