Avatar billede davidchristensen Praktikant
21. februar 2002 - 02:21 Der er 22 kommentarer og
1 løsning

Trace OnClick mm.

Halløj..

Hvordan kan jeg trace, om hvorvidt brugeren har trykket på en knap eller ej?

1. Lad os sige der er to knapper der fører et vilkårligt sted hen - jeg er i første omgang kun interesseret i at samle data om hvilken af de to knapper brugeren har trykket på.

(Og lige et bi-spørgsmål: kan man navngive en knap? Det kan man vel..)

2. Lad os sige jeg har en film der ialt består af 30 knapper. Hvor simpelt kan jeg lave en variabel, der alt efter hvilke knapper der er trykket på i en given rækkefølge, skriver en unik værdi jf. brugerens vej gennem sitet?

Med andre ord, jeg er ude på at vide noget om hvordan man bedst kan samle data om brugerens færden, så jeg har mulighed for at få min film til at virke semi-intellingent..

100 ekspertenbananer er i første omgang på højkant :)

David
-
Avatar billede pixelpaw Nybegynder
21. februar 2002 - 08:54 #1
Hvis du nu har 30 knapper, kan du på hver af dem lave en variabel ala dette:

on (release) {
  _root.strButtonPressed = button15;
}

hvis det altså er knap nummer 15 der er blevet trykket.

Eller hvis du vil samle det i et array:

(det er smartest lige at lave dit array først, f.eks. i frame i _root. Og en lille tæller)
arrButtons = new Array();
iButtons = 0;

on (release) {
  _root.arrButtons[_root.iButtons] = 15;
  _root.iButtons++;
}

Igen hvis det er knap 15 der er trykket ned.

Dette kan skrives bedre i en funktion:

frame1 i _root:
arrButtonsPressed = new Array();
iButtons = 1;
function addButton (Number(intButton)) {
  arrButtonsPressed[iButtons] = intButton;
  iButtons++;
}

så skal du fra din knap bare kalde funktionen og sende knappens tal med:
on (release) {
  _root.addButton(15);
}
Avatar billede pixelpaw Nybegynder
21. februar 2002 - 08:55 #2
håber det svarer lidt på det?
Avatar billede paask Nybegynder
21. februar 2002 - 09:35 #3
Rigtig nice lavet pixelpaw! Jeg takker også lige for din metode :0)

Jeg ville lige nævne noget mht. at navngive buttons. Så vidt jeg da ved er det ikke muligt at navngive dem direkte, men for at simulere det, kan du 'pakke hver knap ind' i et mc og benytte dets instancenavn. Lad os sige, at alle dine knapper ligger i et instance af et mc hver (med samme knap), og disse navngiver du så knap1, knap2 ... knap29, knap30. Action på din knap, jvf. pixelpaw's eksempel, kan så være

on (release) {
  _root.addButton(_name.slice(4));
}

_name henviser til det mc i hvis timeline knappen er placeret. Det var bare en sidebemærkning, jeg tror du har rigeligt spændende i paw's stuff ;0)
Avatar billede davidchristensen Praktikant
21. februar 2002 - 10:25 #4
Hey. Ja, det gør det, helt sikkert! Jeg håber you dont' mind hvis jeg lige lader spørgsmålet stå lidt endnu; desuden har jeg heller ikke Flash lige her, så jeg kan afprøve det, men det ser virkeligt lovende ud! :)

David
-
Avatar billede pixelpaw Nybegynder
21. februar 2002 - 10:29 #5
så smider jeg lige et svar :o)
Avatar billede paask Nybegynder
21. februar 2002 - 10:34 #6
Nu når jeg er så godt igang med sidebemærkninger... Kan du måske lokkes til at vise din kilde-kode til din tegne-ting paw?

Jeg gik igang med at lave en til min niece den anden dag - det tager jo en krig ;0)
Avatar billede pixelpaw Nybegynder
21. februar 2002 - 10:40 #7
Jeg er faktisk ved at lave lidt om på den, så der kommer flere forskellige tegne "teknikker".
Avatar billede paask Nybegynder
21. februar 2002 - 10:47 #8
Jamen så meget desto bedre, den er rigtig godt lavet. En fil jeg godt kunne tænke mig at 'få fingrene i' og studere lidt kode ;0)
Avatar billede pixelpaw Nybegynder
21. februar 2002 - 10:53 #9
send mig en mail: paw@pote.dk
Avatar billede paask Nybegynder
21. februar 2002 - 11:01 #10
Det har jeg lige gjort - jeg glæder mig som et barn. Tusind tak, jeg bukker og løfter hatten :0)

God stil må man sige!
Avatar billede davidchristensen Praktikant
21. februar 2002 - 14:27 #11
Paask >>

Min ven, nu må du lige forklare mig:

on (release) {
  _root.addButton(_name.slice(4));
}

_name refererer til det jeg vælger at kalde MC'et som knappen ligger i, som du siger. Hvad er slice, så? Og hvad med 4-tallet? Og variablen addButton, den findes da ikke oppe i Pixelpaws script?

Undskyld, hvis jeg spør' som en sinke, men der altså stadigvæk nogen huller i min actionscripting-kunnen, som irretere mig og som åbenbart gør at jeg ikke helt forstår hvordan det EGENTLIG fungere.. :)

David
-
Avatar billede barklund Nybegynder
21. februar 2002 - 14:34 #12
slice() en en String-metode, der slicer strengen i stykker... Lidt som substr() eller substring()... Her slicer den strengen i stykker fra det fjerde tegn og frem...

Da _name er "knap0" til "knap30", så vil slice(4) give "0" til "30"...

Bare lidt smartere, så du ikke skal lave 30 forskellige knapper, men kun én med den samme kode kopieret 30 gange... eller rettere indsat en gang i et MC kopieret 30 gange og navngivet...

se:

http://www.macromedia.com/support/flash/action_scripts/objects/stringslice.html

/Barklund
Avatar billede paask Nybegynder
21. februar 2002 - 15:36 #13
Præcist Barklund :0)

addButton(); er en funktion pixelpaw definerer for at styre det dynamiske array hvori knappernes værdier bliver placeret. Den funktion har et parameter, som paw har defineret som Number(intButton). Ved at slice navnet på movieclippet (i.e. knap30 bliver 30) og indsætte det som parameter i paw's funktion, bliver det pågældende array index (styret af variablen iButtons med ++ operatoren) tildelt værdien/nummeret på knappen. Paw's funktion er her:

function addButton (Number(intButton)) {
  arrButtonsPressed[iButtons] = intButton;
  iButtons++;
}

Et eksempel, hvis der trykkes på knap 30 som den første vil funktionen se således ud:

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

Hvorefter arrayet arrButtonsPressed har værdien 30 i sit første index, hvilket er 0. iButtons har nu værdien 1, dvs. næste gang en knap trykkes på (vi siger knap 21) vil arrButtonsPressed index 2 have værdien af den nye knap, nemlig 21.

Håber det forklarede lidt :0)
Avatar billede paask Nybegynder
21. februar 2002 - 15:40 #14
Index 1 til slut... min fejl.
Avatar billede davidchristensen Praktikant
21. februar 2002 - 22:43 #15
Det forklarer en hel del. Tak, venner :)

Pixel, så er der banan.. :D

David
-
Avatar billede davidchristensen Praktikant
21. februar 2002 - 23:24 #16
Så, nu melder der sig lige flere spørgsmål..

Det vil sige efter at brugeren har været på siden et stykke tid, vil der efterhånden opstå et array der lyder noget i stil med:

arrButtons: index1=2
            index2=56
            index3=32
            index4=3

Eksempektvis..?

Se, jeg véd slet ikke hvordan dether array vil komme til at se ud. Hvordan kan jeg komme til det?

Derudover, hvordan kan jeg sige noget i stil med:

If arrButtons=4, then goTo frame 4 ? (altså, hvis brugeren har trykket på knap fire, så skal han gå til en anden frame - og hvis brugeren har trykket en bestemt sekvens af knapper, skal han sendes et andet sted hen..?)

Er det for meget at forlange, her? :)

David
-
Avatar billede pixelpaw Nybegynder
22. februar 2002 - 10:32 #17
dit array vil se sådan her ud:
arrButtons = [2,56,32,3];

Hvis du skal teste om et specielt tal er i dit array, så gør du sådan her:

for (i=0;i<_root.arrButtons.length;i++) {
  if (arrButtons[i] = 3) {
    gør et eller andet
  }
}
Avatar billede davidchristensen Praktikant
22. februar 2002 - 22:13 #18
Okay, megasejt! ;) Tak!
Avatar billede davidchristensen Praktikant
22. februar 2002 - 22:31 #19
Kan jeg så også sige:
OnClick
for (i=0;i<_root.arrButtons.length;i++) {
  if (arrButtons[i] = 3,7,43,39) {
    GoTo frame 4
  }
}

Jeg sprøger her om to ting: 1:Kan man indsætte dette dit script på en knap á la den måde jeg har forsøgt at vise her med lidt seudokode?

2: Kan jeg skrive en præcis rækkefølge i scriptet, så hvis kun denne rækkefølge er opfyldt, vil den være sand? (Jeg mener her rækkefølgen af numrerne og ikke kun tallenes enkeltstående værdier)

Hvis du kræver flere point må du endelig sige til. Jeg er meget tæt på at få lige dét jeg ønsker mig, her, efter jeg har fået svar på mine to sidste spørgsmål.. :)

David
-
Avatar billede davidchristensen Praktikant
22. februar 2002 - 22:34 #20
I øvrigt vil jeg også gerne spørge om hvordan man implementerer en "els-sætning"?

Altså:

OnClick
for (i=0;i<_root.arrButtons.length;i++) {
  if (arrButtons[i] = 3,7,43,39) {
    GoTo frame 4
  els GoTo frame 3
  }
}

:)
David
-
Avatar billede davidchristensen Praktikant
22. februar 2002 - 22:37 #21
Hey venner, jeg har lige oprettet et nyt spørgsmål med lidt flere point, fordi jeg må lige ha' ordnet dether endnu mere :)

Fortsættes på: http://www.eksperten.dk/spm/176530
Avatar billede davidchristensen Praktikant
23. februar 2002 - 21:31 #22
Jeg kan ikke få det til at virke..

Jeg har sat:
arrButtons = new Array();
iButtons = 0;
-på første frame i _root.

Dernæst har jeg lavet en knap, pakket dem ind i hver sit MC og har kaldt dem henholdsvis for 1,2,3,4 og 5

Til sidst har jeg på hver knap sat dette script på

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);
        }
    }
  }

}

..Dog er answerlist forskellig fra knap til knap.

Man det dur ikke. Der sker ingen alverdens ting når jeg trykker på knappen.. Que passa?

David
-
Avatar billede davidchristensen Praktikant
23. februar 2002 - 22:35 #23
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