Evenimente
description
Transcript of Evenimente
![Page 1: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/1.jpg)
1
Evenimente
Cosmin Varlan
Cosmin Vârlan
http://www.infoiasi.ro/~flash/prezentari_cerc
![Page 2: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/2.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
2
Ce este un eveniment ?
• Un eveniment este un “moment special” din viata unui obiect.
• Atunci cand se produce un eveniment, toate sarcinile obiectulu sunt trecute pe planul doi, tratarea corespunzatoare a evenimentului devenind principalul scop de moment.
• Dupa tratarea corespunzatoare a evenimentului, obiectul isi continua viata de frame cu frame.
Cosmin Vârlan
![Page 3: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/3.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
3
Ce este un eveniment ?
• Nu toate evenimentele sunt importante pentru un obiect:
- pe unele le intereseaza cand sunt “clicacite”- pe altele le intereseaza cand s-a incarcat o
anumita resursa- sau cand se produce o eroare, sau apare o
problema de securitate, sau cand primeste sau pierde focusul, cand este apasata o tasta etc.
Cosmin Vârlan
![Page 4: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/4.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
4
Dar ce este un eveniment?
• Un eveniment este un obiect, instanta a unei clase ce extinde clasa Events.
• Evenimentul este “aruncat” printr-o procedura “dispatch”
Cosmin Vârlan
![Page 5: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/5.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
5
Dispatch – in dictionar • 1. expediere, trimitere; dispath service = serviciu de expediţie (al unei
case comerciale); dispatch note = borderou de expediere;• 2. rezolvare promptă (a unei afaceri);• 3. promptitudine, rapiditate; with all possible dispatch = cu cea mai
mare promptitudine;• 4. executare (a unui condamnat), omorâre; happy dispatch = harachiri;• 5. depeşă (diplomatică, telegrafică);• 6. întreprindere de transporturi rapide;• 7. a expedia (o scrisoare, mărfuri); a trimite (un curier);• 8. a omorî;• 9. a rezolva, a lichida repede (o afacere, o chestiune);• 10. a mânca pe nerăsuflate
Cosmin Vârlan
![Page 6: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/6.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
6
Daca poate fi ?
• Cine initiaza aceasta procedura ? – chiar obiectul.
• De ce ? – pentru ca toata lumea sa poata afla (intr-o oarecare masura ce a patit)
• Cine poate lua masuri ? (trata evenimentul) - Evenimentul poate fi tratat atat de obiectul
care a facut dispatch cat si de oricare dintre parintii lui.
Cosmin Vârlan
![Page 7: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/7.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
7
Cum afla parintii de eveniment?
• Atunci cand obiect de tip eveniment este aruncat (aruncat = dispatch), el trece prin trei faze: capture / targeting / bubbling.
Cosmin Vârlan
![Page 8: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/8.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
8
Usecase
• In scena avem un nod parinte care are doi copii:
Cosmin Vârlan
![Page 9: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/9.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
9
Usecase
• Fiecare din copii are atasat evenimentul “Click”. In momentul apasarii: acestuia, evenimentul trece prin cele trei faze (capture / targeting / bubbling ).
Cosmin Vârlan
![Page 10: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/10.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
10
Usecase
• Ordinea fazelor este exact cea expusa mai sus:
Cosmin Vârlan
![Page 11: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/11.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
11
Usecase
Cosmin Vârlan
Capture
![Page 12: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/12.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
12
Usecase
Cosmin Vârlan
Target
![Page 13: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/13.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
13
Usecase
Cosmin Vârlan
Bubble
![Page 14: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/14.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
14
Usecase
Cosmin Vârlan
Fratele nu poate
“vedea” eventul
![Page 15: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/15.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
15
Cine poate “asculta” evenimentul ?
• Oricare din parinti• Obiectul• Din nou oricare din parinti (bubble)
Sa traducem termenii >:)1. Capture = captura2. Target = tinta3. Bubble = ecou
Cosmin Vârlan
![Page 16: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/16.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
16
Let’s Code !
Cosmin Vârlan
Cele trei obiecte: un parinte, doi copii
Evenimente de click pentru
fiecare…
![Page 17: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/17.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
17
Let’s Code !
Cosmin Vârlan
Aranjam in scena, desenam … chestii simple pentru
programatori AS3 asa avansati ca voi…
![Page 18: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/18.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
18
Let’s Code !
Cosmin Vârlan
Functiile - listener nu fac decat trace la numele obiectului care
a capturat evenimentul
![Page 19: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/19.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
19
Let’s Code !
Cosmin Vârlan
Dupa ce s-a apasat NUMAI pe primul copil
![Page 20: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/20.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
20
Let’s Code !
Cosmin Vârlan
TARGET
BUBBLE
![Page 21: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/21.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
21
Ce s-a intamplat cu faza de “capture”?
• Pentru a permite obiectelor-parinti sa captureze evenimentul in faza de “capture”, comenzii addEventListener ii mai trebuie un parametru (true).
• De fapt acum vom atasa listenerul numai pentru faza de capture, nu si pentru bubble.
Cosmin Vârlan
Here it is
![Page 22: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/22.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
22
Re-Run !
Cosmin Vârlan
TARGET
CAPTURE
![Page 23: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/23.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
23
Se pot adauga si toate fazele:
Cosmin Vârlan
![Page 24: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/24.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
24
Re-Run !
Cosmin Vârlan
CAPTURE
TARGET
BUBBLE
![Page 25: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/25.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
25
De ce e nevoie de toate fazele astea?
• Parintii pot trimite “mesaje” prin intermediul obiecteleor de tip eveniment catre copii (si viceversa).
• Pentru a face acest lucru trebuie totusi ca evenimentul sa permita adaugarea mesajului
• Un utilizator poate crea un obiect de tip eveniment ca instanta a unei clase (proprii) care sa extinda event… NICE!
Cosmin Vârlan
![Page 26: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/26.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
26
De ce e nevoie de toate fazele astea?
• De ce ar crea un utilizator asa ceva ? - de exemplu obiectul de tip meniu pentru o
galerie foto ar putea trimite parintilor sai ca toate pozele s-au incarcat ca un eveniment:
Sa va zic ceva misto: “allMyPicturesAreLoaded”
Parintele: “UUUUuuu.. Sa te exploatam atunci”
Cosmin Vârlan
![Page 27: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/27.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
27
Sa creem o clasa CustomEvent…
Cosmin Vârlan
Extindere clasica
![Page 28: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/28.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
28
Sa creem o clasa CustomEvent…
Cosmin Vârlan
Un nume pentru event este un sir de caractere (de ex:
MouseEvent.CLICK == “click”)
![Page 29: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/29.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
29
Sa creem o clasa CustomEvent…
Cosmin Vârlan
Se va propaga in sens invers ?(aici ar trebui sa trimitem true
cand facem obiectul de tip CustomEvent ca sa putem sa il
prindem si in faza de ecou)
![Page 30: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/30.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
30
Sa creem o clasa CustomEvent…
Cosmin Vârlan
I se permite vreunui obiect sa opreasca propagarea cu “stopPropagation” sau
“stopImmediatePropagation” ?
![Page 31: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/31.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
31
Sa creem o clasa CustomEvent…
Cosmin Vârlan
Apelam constructorul superclasei cu parametrii primiti
![Page 32: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/32.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
32
Sa creem o clasa CustomEvent…
Cosmin Vârlan
Acest obiect nu poate “duce” nici o proprietate. Sa il facem dinamic
ca sa-i putem adauga proprietati la runtime
![Page 33: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/33.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
33
WHAT NEXT?
• Dupa apasarea lui copil1, acesta va porni (intern) un timer: cu setInterval si vom apela la fiecare 500ms o functie care va genera un numar intreg intre 0 si 100. Daca numarul este divizibil cu 10 va arunca evenimentul nostru de tip CustomEvent avand proprietatea valoare setata cu valoarea numarului.
• Rescriem listenerul “evenimentCopil1”:
Cosmin Vârlan
![Page 34: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/34.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
34
evenimentCopil1
Cosmin Vârlan
Apelam la fiecare 500ms
![Page 35: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/35.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
35
evenimentCopil1
Cosmin Vârlan
Aceasta functie
![Page 36: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/36.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
36
evenimentCopil1
Cosmin Vârlan
In care se genereaza un uint
intre 0 si 100
![Page 37: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/37.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
37
evenimentCopil1
Cosmin Vârlan
Si daca este divizibil cu 10
![Page 38: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/38.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
38
evenimentCopil1
Cosmin Vârlan
Ceam un obiect de tip
CustomEvent
![Page 39: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/39.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
39
evenimentCopil1
Cosmin Vârlan
Evenimentul va fi identificat prin
acest String
![Page 40: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/40.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
40
evenimentCopil1
Cosmin Vârlan
Ii setam o proprietate
![Page 41: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/41.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
41
evenimentCopil1
Cosmin Vârlan
Si ii facem Dispatch
![Page 42: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/42.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
42
Evenimentul il vom prinde mai apoi intr-unul din parinti – scena de ex:
Cosmin Vârlan
Care eveniment ? Acest eveniment!
Apel functie listener (care va primi ca
parametru un obiect de tip CustomEvent)
![Page 43: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/43.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
43
evenimentCopil1
Cosmin Vârlan
Da, acesta !!!
![Page 44: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/44.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
44
evenimentCopil1
Cosmin Vârlan
Care contine valoarea setata anterior !
![Page 45: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/45.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
45Cosmin Vârlan
![Page 46: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/46.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
46
De mai multe ori acelasi event:
• Daca pe copil1 atasam de mai multe ori evenimentul MouseEvent.CLICK, oridnea capturarii este cea a adaugarii (de fapt este creata o lista de evenimente si in aceasta lista ordinea este cea in care s-au adaugat).
• Daca vreti sa modificati prioritatea, dupa al treilea parametru reprezentand capturarea in momentul “capture”, se poate adauga un al patrulea de tip uint reprezentand prioritatea.
Cosmin Vârlan
![Page 47: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/47.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
47
Weak References:
• Un ultim parametru atunci cand este adaugat un eveniment este “use weak reference” de tip Boolean. Daca obiectul caruia i-a fost adaugat evenimentul isi pierde toate referintele in mod normal acesta ar trebui sa fie colectat de garbage collector. Acest lucru se intampla fie daca ati eliminat in prealabil evenimentul fie daca ati setat ca true valoarea lui “use weak reference”.
Cosmin Vârlan
![Page 48: Evenimente](https://reader034.fdocumente.com/reader034/viewer/2022042901/56814e04550346895dbb7389/html5/thumbnails/48.jpg)
http://www.infoiasi.ro/~flash/prezentari_cerc
48
Intrebari ?!?!
Cosmin Vârlan