Submit Search
Upload
150 scripts pour flash as2
âą
1 like
âą
5,423 views
messaoudi mohamed
Follow
formation en flash 8 action scriptes
Read less
Read more
Education
Report
Share
Report
Share
1 of 546
Download now
Download to read offline
Recommended
PréSentation Flash
PréSentation Flash
cmarguet
Â
Introduction Ă flash - session 1
Introduction Ă flash - session 1
saeraphin
Â
Prsentation flash
Prsentation flash
ward marzouki
Â
Pratique d'action script 3 version 0.1.4
Pratique d'action script 3 version 0.1.4
Ben Donaldson
Â
Tablette ou web : 11 outils pour créer des citations !
Tablette ou web : 11 outils pour créer des citations !
Redaction SKODEN
Â
DĂ©veloppez des applications natives en HTML/JS avec Chrome apps
DĂ©veloppez des applications natives en HTML/JS avec Chrome apps
Florent Dupont
Â
Pratique D Action Script 3 Version 0.1
Pratique D Action Script 3 Version 0.1
guest5cdd799
Â
Les Meilleurs Extensions: Top 10 google chrome extensions
Les Meilleurs Extensions: Top 10 google chrome extensions
Abderrahim Sibari
Â
Recommended
PréSentation Flash
PréSentation Flash
cmarguet
Â
Introduction Ă flash - session 1
Introduction Ă flash - session 1
saeraphin
Â
Prsentation flash
Prsentation flash
ward marzouki
Â
Pratique d'action script 3 version 0.1.4
Pratique d'action script 3 version 0.1.4
Ben Donaldson
Â
Tablette ou web : 11 outils pour créer des citations !
Tablette ou web : 11 outils pour créer des citations !
Redaction SKODEN
Â
DĂ©veloppez des applications natives en HTML/JS avec Chrome apps
DĂ©veloppez des applications natives en HTML/JS avec Chrome apps
Florent Dupont
Â
Pratique D Action Script 3 Version 0.1
Pratique D Action Script 3 Version 0.1
guest5cdd799
Â
Les Meilleurs Extensions: Top 10 google chrome extensions
Les Meilleurs Extensions: Top 10 google chrome extensions
Abderrahim Sibari
Â
Welding time (rotoweld)
Welding time (rotoweld)
ŰŁŰÙ ŰŻ ŰŻŰčۚ۳
Â
ŰŁÙŰŽŰ·Ű© ۧÙÙ۷ۧŰč ۧÙۚ۳ÙŰ·
ŰŁÙŰŽŰ·Ű© ۧÙÙ۷ۧŰč ۧÙۚ۳ÙŰ·
messaoudi mohamed
Â
ۧÙ۱۳Ù
ۧÙ۱۳Ù
mish99
Â
ۧÙŰȘÙ Ű§Ű±ÙÙ Ű§ÙÙ ŰÙÙÙŰ© ÙÙŰȘۧۚ ۧÙŰ±ŰłÙ Ű§ÙÙÙŰŻŰłÙ 1 - copy
ۧÙŰȘÙ Ű§Ű±ÙÙ Ű§ÙÙ ŰÙÙÙŰ© ÙÙŰȘۧۚ ۧÙŰ±ŰłÙ Ű§ÙÙÙŰŻŰłÙ 1 - copy
elsayedelsman
Â
Sections ۧÙÙ۷ۧŰčۧŰȘ - Ű„ŰłÙۧ۷ Ù۷ۧŰčۧŰȘ ۧÙۣۏ۳ۧÙ
Sections ۧÙÙ۷ۧŰčۧŰȘ - Ű„ŰłÙۧ۷ Ù۷ۧŰčۧŰȘ ۧÙۣۏ۳ۧÙ
ŰŁŰÙ ŰŻ ŰŻŰčۚ۳
Â
présentation de soutenance PFE
présentation de soutenance PFE
Karim Labidi
Â
4° medio desafio x 3
4° medio desafio x 3
Jose Avendaño
Â
Gifs infos argos 26
Gifs infos argos 26
yves99
Â
Estrategia Semanal de Cortal Consors
Estrategia Semanal de Cortal Consors
Salainversion
Â
Il est né le divin enfant
Il est né le divin enfant
illadearousa
Â
Estrategia Semanal de Cortal Consors
Estrategia Semanal de Cortal Consors
Salainversion
Â
Nike Shox Nz Femme BT9411
Nike Shox Nz Femme BT9411
subsequentfurvo52
Â
Offres dâemploi sur internet
Offres dâemploi sur internet
AlexL79
Â
CC Namur ordre du jour
CC Namur ordre du jour
benjaave
Â
Publicidadinternet
Publicidadinternet
ITS, ENSJ, UTP, UCPR
Â
Regards sur l'Afrique
Regards sur l'Afrique
mlaugel
Â
Offre de service
Offre de service
rabah yahiaoui
Â
Authentica for wine fr
Authentica for wine fr
Scratch&Screen
Â
Lesson template
Lesson template
aneesh a
Â
Presentation datalocale generaliste
Presentation datalocale generaliste
ressourcerie_datalocale
Â
Design patterns
Design patterns
CocoaHeads.fr
Â
Design patterns
Design patterns
CocoaHeads.fr
Â
More Related Content
Viewers also liked
Welding time (rotoweld)
Welding time (rotoweld)
ŰŁŰÙ ŰŻ ŰŻŰčۚ۳
Â
ŰŁÙŰŽŰ·Ű© ۧÙÙ۷ۧŰč ۧÙۚ۳ÙŰ·
ŰŁÙŰŽŰ·Ű© ۧÙÙ۷ۧŰč ۧÙۚ۳ÙŰ·
messaoudi mohamed
Â
ۧÙ۱۳Ù
ۧÙ۱۳Ù
mish99
Â
ۧÙŰȘÙ Ű§Ű±ÙÙ Ű§ÙÙ ŰÙÙÙŰ© ÙÙŰȘۧۚ ۧÙŰ±ŰłÙ Ű§ÙÙÙŰŻŰłÙ 1 - copy
ۧÙŰȘÙ Ű§Ű±ÙÙ Ű§ÙÙ ŰÙÙÙŰ© ÙÙŰȘۧۚ ۧÙŰ±ŰłÙ Ű§ÙÙÙŰŻŰłÙ 1 - copy
elsayedelsman
Â
Sections ۧÙÙ۷ۧŰčۧŰȘ - Ű„ŰłÙۧ۷ Ù۷ۧŰčۧŰȘ ۧÙۣۏ۳ۧÙ
Sections ۧÙÙ۷ۧŰčۧŰȘ - Ű„ŰłÙۧ۷ Ù۷ۧŰčۧŰȘ ۧÙۣۏ۳ۧÙ
ŰŁŰÙ ŰŻ ŰŻŰčۚ۳
Â
présentation de soutenance PFE
présentation de soutenance PFE
Karim Labidi
Â
4° medio desafio x 3
4° medio desafio x 3
Jose Avendaño
Â
Gifs infos argos 26
Gifs infos argos 26
yves99
Â
Estrategia Semanal de Cortal Consors
Estrategia Semanal de Cortal Consors
Salainversion
Â
Il est né le divin enfant
Il est né le divin enfant
illadearousa
Â
Estrategia Semanal de Cortal Consors
Estrategia Semanal de Cortal Consors
Salainversion
Â
Nike Shox Nz Femme BT9411
Nike Shox Nz Femme BT9411
subsequentfurvo52
Â
Offres dâemploi sur internet
Offres dâemploi sur internet
AlexL79
Â
CC Namur ordre du jour
CC Namur ordre du jour
benjaave
Â
Publicidadinternet
Publicidadinternet
ITS, ENSJ, UTP, UCPR
Â
Regards sur l'Afrique
Regards sur l'Afrique
mlaugel
Â
Offre de service
Offre de service
rabah yahiaoui
Â
Authentica for wine fr
Authentica for wine fr
Scratch&Screen
Â
Lesson template
Lesson template
aneesh a
Â
Presentation datalocale generaliste
Presentation datalocale generaliste
ressourcerie_datalocale
Â
Viewers also liked
(20)
Welding time (rotoweld)
Welding time (rotoweld)
Â
ŰŁÙŰŽŰ·Ű© ۧÙÙ۷ۧŰč ۧÙۚ۳ÙŰ·
ŰŁÙŰŽŰ·Ű© ۧÙÙ۷ۧŰč ۧÙۚ۳ÙŰ·
Â
ۧÙ۱۳Ù
ۧÙ۱۳Ù
Â
ۧÙŰȘÙ Ű§Ű±ÙÙ Ű§ÙÙ ŰÙÙÙŰ© ÙÙŰȘۧۚ ۧÙŰ±ŰłÙ Ű§ÙÙÙŰŻŰłÙ 1 - copy
ۧÙŰȘÙ Ű§Ű±ÙÙ Ű§ÙÙ ŰÙÙÙŰ© ÙÙŰȘۧۚ ۧÙŰ±ŰłÙ Ű§ÙÙÙŰŻŰłÙ 1 - copy
Â
Sections ۧÙÙ۷ۧŰčۧŰȘ - Ű„ŰłÙۧ۷ Ù۷ۧŰčۧŰȘ ۧÙۣۏ۳ۧÙ
Sections ۧÙÙ۷ۧŰčۧŰȘ - Ű„ŰłÙۧ۷ Ù۷ۧŰčۧŰȘ ۧÙۣۏ۳ۧÙ
Â
présentation de soutenance PFE
présentation de soutenance PFE
Â
4° medio desafio x 3
4° medio desafio x 3
Â
Gifs infos argos 26
Gifs infos argos 26
Â
Estrategia Semanal de Cortal Consors
Estrategia Semanal de Cortal Consors
Â
Il est né le divin enfant
Il est né le divin enfant
Â
Estrategia Semanal de Cortal Consors
Estrategia Semanal de Cortal Consors
Â
Nike Shox Nz Femme BT9411
Nike Shox Nz Femme BT9411
Â
Offres dâemploi sur internet
Offres dâemploi sur internet
Â
CC Namur ordre du jour
CC Namur ordre du jour
Â
Publicidadinternet
Publicidadinternet
Â
Regards sur l'Afrique
Regards sur l'Afrique
Â
Offre de service
Offre de service
Â
Authentica for wine fr
Authentica for wine fr
Â
Lesson template
Lesson template
Â
Presentation datalocale generaliste
Presentation datalocale generaliste
Â
Similar to 150 scripts pour flash as2
Design patterns
Design patterns
CocoaHeads.fr
Â
Design patterns
Design patterns
CocoaHeads.fr
Â
A Qui Sadresse Louvrage
A Qui Sadresse Louvrage
guesta01510d
Â
titre
titre
Philippe Ramette Pro
Â
Sinitier_a_la_programmation_et_a_loriente_objet__avec_des_exemples_en_C_C_C_J...
Sinitier_a_la_programmation_et_a_loriente_objet__avec_des_exemples_en_C_C_C_J...
JUSTINDAVONDAMBAT
Â
Microsoft Project Support de cours
Microsoft Project Support de cours
đĄ Vincent Isoz
Â
Utiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateforme
pprem
Â
Logiciels 3d-112-ktcufc
Logiciels 3d-112-ktcufc
Thierry Delarue
Â
Responsible Design ou Le web moderne Ă destination de tous
Responsible Design ou Le web moderne Ă destination de tous
jwajsberg
Â
Jabes 2007 - Atelier 5, CR atelier ergonomie
Jabes 2007 - Atelier 5, CR atelier ergonomie
ABES
Â
Extrait chap1
Extrait chap1
mvaudano
Â
Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !
Société ELOSI
Â
Fiche de TD 2 de préparation probatoire (littéraire et scientifique) du Camer...
Fiche de TD 2 de préparation probatoire (littéraire et scientifique) du Camer...
ATPENSC-Group
Â
Actionscript: du web au mobile
Actionscript: du web au mobile
Martin Arvisais
Â
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
cluelessjoe
Â
Tutoriel java
Tutoriel java
Kalilou DIABY
Â
Reprenez le controle de linux (2010)
Reprenez le controle de linux (2010)
Théodore KOFFI
Â
Programmer pour les nuls afin de maĂźtriser la programmation dans tout son sens
Programmer pour les nuls afin de maĂźtriser la programmation dans tout son sens
Jean-philippe Denou
Â
Js cours
Js cours
yarsenv47
Â
Gestion deprojets textile produit
Gestion deprojets textile produit
moutaouakilamine
Â
Similar to 150 scripts pour flash as2
(20)
Design patterns
Design patterns
Â
Design patterns
Design patterns
Â
A Qui Sadresse Louvrage
A Qui Sadresse Louvrage
Â
titre
titre
Â
Sinitier_a_la_programmation_et_a_loriente_objet__avec_des_exemples_en_C_C_C_J...
Sinitier_a_la_programmation_et_a_loriente_objet__avec_des_exemples_en_C_C_C_J...
Â
Microsoft Project Support de cours
Microsoft Project Support de cours
Â
Utiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateforme
Â
Logiciels 3d-112-ktcufc
Logiciels 3d-112-ktcufc
Â
Responsible Design ou Le web moderne Ă destination de tous
Responsible Design ou Le web moderne Ă destination de tous
Â
Jabes 2007 - Atelier 5, CR atelier ergonomie
Jabes 2007 - Atelier 5, CR atelier ergonomie
Â
Extrait chap1
Extrait chap1
Â
Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !
Â
Fiche de TD 2 de préparation probatoire (littéraire et scientifique) du Camer...
Fiche de TD 2 de préparation probatoire (littéraire et scientifique) du Camer...
Â
Actionscript: du web au mobile
Actionscript: du web au mobile
Â
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
Â
Tutoriel java
Tutoriel java
Â
Reprenez le controle de linux (2010)
Reprenez le controle de linux (2010)
Â
Programmer pour les nuls afin de maĂźtriser la programmation dans tout son sens
Programmer pour les nuls afin de maĂźtriser la programmation dans tout son sens
Â
Js cours
Js cours
Â
Gestion deprojets textile produit
Gestion deprojets textile produit
Â
More from messaoudi mohamed
ŰȘŰ·ŰšÙÙۧŰȘ ۧÙۧ۳Ùۧ۷ ۧÙÙ ŰȘŰčŰ§Ù ŰŻ 8.pdf
ŰȘŰ·ŰšÙÙۧŰȘ ۧÙۧ۳Ùۧ۷ ۧÙÙ ŰȘŰčŰ§Ù ŰŻ 8.pdf
messaoudi mohamed
Â
ۧÙÙ Ű±ŰŹŰč ÙÙŰȘ۱ۚÙŰ© ŰšŰȘÙÙŰł
ۧÙÙ Ű±ŰŹŰč ÙÙŰȘ۱ۚÙŰ© ŰšŰȘÙÙŰł
messaoudi mohamed
Â
SynthĂšse et mise en oeuvre dâune carte dâinterface pour codeur incrĂ©mental.pdf
SynthĂšse et mise en oeuvre dâune carte dâinterface pour codeur incrĂ©mental.pdf
messaoudi mohamed
Â
ۧÙŰȘ۱ÙÙÙ ÙŰ«ÙÙŰ© 9 ۧ۳ۧ۳Ù
ۧÙŰȘ۱ÙÙÙ ÙŰ«ÙÙŰ© 9 ۧ۳ۧ۳Ù
messaoudi mohamed
Â
ۧ۳۱Űč ۷۱ÙÙŰ© ÙۧŰŰȘŰ±Ű§Ù ŰšŰ±Ù ŰŹŰ© ۧÙÙ Ű§ÙÙ۱ÙÙÙŰȘ۱ÙÙ۱
ۧ۳۱Űč ۷۱ÙÙŰ© ÙۧŰŰȘŰ±Ű§Ù ŰšŰ±Ù ŰŹŰ© ۧÙÙ Ű§ÙÙ۱ÙÙÙŰȘ۱ÙÙ۱
messaoudi mohamed
Â
Présentation effective 1.3
Présentation effective 1.3
messaoudi mohamed
Â
Guide du formateur
Guide du formateur
messaoudi mohamed
Â
More from messaoudi mohamed
(7)
ŰȘŰ·ŰšÙÙۧŰȘ ۧÙۧ۳Ùۧ۷ ۧÙÙ ŰȘŰčŰ§Ù ŰŻ 8.pdf
ŰȘŰ·ŰšÙÙۧŰȘ ۧÙۧ۳Ùۧ۷ ۧÙÙ ŰȘŰčŰ§Ù ŰŻ 8.pdf
Â
ۧÙÙ Ű±ŰŹŰč ÙÙŰȘ۱ۚÙŰ© ŰšŰȘÙÙŰł
ۧÙÙ Ű±ŰŹŰč ÙÙŰȘ۱ۚÙŰ© ŰšŰȘÙÙŰł
Â
SynthĂšse et mise en oeuvre dâune carte dâinterface pour codeur incrĂ©mental.pdf
SynthĂšse et mise en oeuvre dâune carte dâinterface pour codeur incrĂ©mental.pdf
Â
ۧÙŰȘ۱ÙÙÙ ÙŰ«ÙÙŰ© 9 ۧ۳ۧ۳Ù
ۧÙŰȘ۱ÙÙÙ ÙŰ«ÙÙŰ© 9 ۧ۳ۧ۳Ù
Â
ۧ۳۱Űč ۷۱ÙÙŰ© ÙۧŰŰȘŰ±Ű§Ù ŰšŰ±Ù ŰŹŰ© ۧÙÙ Ű§ÙÙ۱ÙÙÙŰȘ۱ÙÙ۱
ۧ۳۱Űč ۷۱ÙÙŰ© ÙۧŰŰȘŰ±Ű§Ù ŰšŰ±Ù ŰŹŰ© ۧÙÙ Ű§ÙÙ۱ÙÙÙŰȘ۱ÙÙ۱
Â
Présentation effective 1.3
Présentation effective 1.3
Â
Guide du formateur
Guide du formateur
Â
Recently uploaded
Cours ofppt du Trade-Marketing-PreÌsentation.pdf
Cours ofppt du Trade-Marketing-PreÌsentation.pdf
achrafbrahimi1
Â
EvaluaciĂłn Alumnos de Ecole Victor Hugo
EvaluaciĂłn Alumnos de Ecole Victor Hugo
IES Turina/Rodrigo/Itaca/Palomeras
Â
Boléro. pptx Film français réalisé par une femme.
Boléro. pptx Film français réalisé par une femme.
Txaruka
Â
Sidonie au Japon . pptx Un film français
Sidonie au Japon . pptx Un film français
Txaruka
Â
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptx
Rayane619450
Â
gestion des conflits dans les entreprises
gestion des conflits dans les entreprises
MajdaKtiri2
Â
La nouvelle femme . pptx Film français
La nouvelle femme . pptx Film français
Txaruka
Â
L'ĂVOLUTION DE L'ĂDUCATION AU BRĂSIL Ă TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ĂVOLUTION DE L'ĂDUCATION AU BRĂSIL Ă TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
Faga1939
Â
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
abatanebureau
Â
Cours PrĂ©paration Ă lâISO 27001 version 2022.pdf
Cours PrĂ©paration Ă lâISO 27001 version 2022.pdf
ssuserc72852
Â
GIĂO ĂN Dáș Y THĂM (KáșŸ HOáș CH BĂI Dáș Y BUá»I 2) - TIáșŸNG ANH 6, 7 GLOBAL SUCCESS (2...
GIĂO ĂN Dáș Y THĂM (KáșŸ HOáș CH BĂI Dáș Y BUá»I 2) - TIáșŸNG ANH 6, 7 GLOBAL SUCCESS (2...
Nguyen Thanh Tu Collection
Â
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film de A nnne Fontaine
Txaruka
Â
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx Film documentaire
Txaruka
Â
Recently uploaded
(13)
Cours ofppt du Trade-Marketing-PreÌsentation.pdf
Cours ofppt du Trade-Marketing-PreÌsentation.pdf
Â
EvaluaciĂłn Alumnos de Ecole Victor Hugo
EvaluaciĂłn Alumnos de Ecole Victor Hugo
Â
Boléro. pptx Film français réalisé par une femme.
Boléro. pptx Film français réalisé par une femme.
Â
Sidonie au Japon . pptx Un film français
Sidonie au Japon . pptx Un film français
Â
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptx
Â
gestion des conflits dans les entreprises
gestion des conflits dans les entreprises
Â
La nouvelle femme . pptx Film français
La nouvelle femme . pptx Film français
Â
L'ĂVOLUTION DE L'ĂDUCATION AU BRĂSIL Ă TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ĂVOLUTION DE L'ĂDUCATION AU BRĂSIL Ă TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
Â
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
Â
Cours PrĂ©paration Ă lâISO 27001 version 2022.pdf
Cours PrĂ©paration Ă lâISO 27001 version 2022.pdf
Â
GIĂO ĂN Dáș Y THĂM (KáșŸ HOáș CH BĂI Dáș Y BUá»I 2) - TIáșŸNG ANH 6, 7 GLOBAL SUCCESS (2...
GIĂO ĂN Dáș Y THĂM (KáșŸ HOáș CH BĂI Dáș Y BUá»I 2) - TIáșŸNG ANH 6, 7 GLOBAL SUCCESS (2...
Â
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film de A nnne Fontaine
Â
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx Film documentaire
Â
150 scripts pour flash as2
1.
50 scripts pour Flash CS3 David Tardiveau
2.
50 scripts pour Flash CS3
3.
Chez le mĂȘme
Ă©diteur D. Tardiveau. â La vidĂ©o dans Flash. N°12048, 2007, 190 pages. A. Tasso. â Apprendre Ă programmer en ActionScript 3 â Avec 60 exercices corrigĂ©s. N°12199, 500 pages. Ă paraĂźtre. W. Siracusa. â Faites vos jeux avec Flash ! â Du Pacman au Sudoku. N°11993, 2006, 220 pages. M. Lavant. â Flash 8 Professional. N°11950, 2006, 678 pages. C. BergĂ©. â Je crĂ©e mon site Internet avec Dreamweaver 8 et Flash 8. N°11977, 2006, 144 pages + CD-Rom vidĂ©o. J.-M. Defrance. â PHP/MySQL avec Flash 8. N°11971, 2006, 782 pages. J.-M. Defrance. â PHP/MySQL avec Flash MX 2004. N°11468, 2005, 710 pages. M. Capraro et al. â Flash MX 2004 Magic. N°11513, 2004, 164 pages. G. Guine, A. Moraes. â Flash MX â Jeu en rĂ©seau avec Action Script et XML. N°11068, 2002, 170 pages. K. Goto, E. Cotler. â Redesign web 2.0. N°11579, 2005, 294 pages. R. Goetter, S. Blondeel. â CSS2 â Pratique du design web. N°11570, 2005, 324 pages. J. Zeldman. â Design web : utiliser les standards â CSS et XHTML. N°11548, 2005, 414 pages. G. Gueneau. â Conduite de projets en crĂ©ation numĂ©rique. N°11474, 2005, 300 pages.
4.
50 scripts pour Flash CS3 David Tardiveau
5.
ĂDITIONS EYROLLES 61, bd
Saint-Germain 75240 Paris Cedex 05 www.editions-eyrolles.com Le code de la propriĂ©tĂ© intellectuelle du 1er juillet 1992 interdit en effet expressĂ©ment la photocopie Ă usage collectif sans autorisation des ayants droit. Or, cette pratique sâest gĂ©nĂ©ralisĂ©e notamment dans les Ă©tablissements dâenseignement, provoquant une baisse brutale des achats de livres, au point que la possibilitĂ© mĂȘme pour les auteurs de crĂ©er des Ćuvres nouvelles et de les faire Ă©diter correctement est aujourdâhui menacĂ©e. En application de la loi du 11 mars 1957, il est interdit de reproduire intĂ©gralement ou partiellement le prĂ©sent ouvrage, sur quelque support que ce soit, sans autorisation de lâĂ©diteur ou du Centre Français dâExploitation du Droit de Copie, 20, rue des Grands-Augustins, 75006 Paris. © Groupe Eyrolles, 2007, ISBN : 978-2-212-12112-4
6.
o t 2007
7:29 07 Remerciements Merci Ă Fanny pour ces moments passĂ©s sur MSN Ă tester certaines animations et pour la relecture de quelques passages du livre. Merci Ă Melux pour ses relectures. EnïŹn, merci Ă Marine et Marjorie qui ont vu mon dos et mon tĂȘte-Ă -tĂȘte avec lâĂ©cran de lâordinateur pendant quatre mois⊠Promis, jâattends deux mois avant dâĂ©crire le prochain livre !
7.
0. ao t
2007 7:29 07
8.
ao t 2007
7:29 07 Avant-propos Pourquoi un tel ouvrage ? Lorsque vous rencontrez un problĂšme en ActionScript, vous disposez de diffĂ©rentes sources dâinformation pour vous aider : en particulier, les forums vous permettent dâinterroger la communautĂ© des ïŹasheurs. Prenez-vous le temps dây rechercher si un post ne correspond pas Ă la question que vous vous apprĂȘtez Ă dĂ©poser ? En parcourant les sujets des principaux forums, on peut en effet constater que les questions sont nombreuses et prĂ©cises. Vous pouvez Ă©galement dĂ©cider dâapprofondir vos connaissances en ActionScript, gĂ©nĂ©ralement de maniĂšre acadĂ©mique ou par autoformation. Dans les deux cas, lâanalyse dâexercices et de cas existants constitue alors un axe majeur de lâacquisition des bases. EnïŹn, si vous nâavez ni le courage ni le temps de rechercher la solution dâun problĂšme dans un forum ou dâapprendre par vous-mĂȘme, il vous reste toujours la possibilitĂ© dâinterroger des spĂ©cialistes. Mais en production dâanimations Flash, si les problĂšmes et besoins de dĂ©veloppement sont rĂ©currents, il nâexiste pas cependant une seule solution de dĂ©ploiement pour dĂ©velopper une partie dâun programme. Câest en partant de ces diffĂ©rents constats quâest nĂ©e lâidĂ©e dâĂ©crire un ouvrage rĂ©fĂ©rençant les techniques les plus frĂ©quemment rencontrĂ©es en production. En tant quâenseignant, je constate que les difïŹcultĂ©s dâapprentissage reposent toujours sur les mĂȘmes problĂšmes : explications trop prĂ©cises lors dâune premiĂšre approche (souvent dans un souci dâexhaustivitĂ©), trop techniques et de ce fait trop abstraites. Câest pourquoi lâapproche pĂ©dagogique utilisĂ©e dans ce livre sâappuie sur des techniques dâenseignement qui ont fait leurs preuves. Certains scripts seront parfois moins optimisĂ©s quâils pourraient ou devraient lâĂȘtre, mais ce sera dans un souci dâaccessibilitĂ© Ă un large public. Nous ne sommes pas lĂ pour critiquer les ressources mises Ă disposition des ïŹasheurs sur Internet, mais il faut reconnaĂźtre que la majeure partie des sites proposant des tutoriaux sont rarement pertinents. Bien souvent, les webmasters (et/ou rĂ©dacteurs, auteurs
9.
ao t 2007
7:29 07 150 scripts pour Flash CS3 dâarticles) ne se mettent ni Ă la place ni au niveau des apprenants. Certes, toutes ces ressources ne sâadressent pas uniquement aux dĂ©butants, mais un certain nombre dâentre elles manquent leur cible en raison de leur degrĂ© dâabstraction. Dâautant quâun apprentissage sâeffectuant par paliers, on peut ĂȘtre novice Ă plusieurs niveaux. Un expert ne devrait jamais oublier que ce qui lui paraĂźt Ă©vident ne lâest pas pour tout le monde. Nous garderons donc Ă lâesprit ces directives tout au long de nos analyses. CompatibilitĂ© des scripts de ce livre Chaque animation est introduite par un texte justiïŹant lâintĂ©rĂȘt de sa prĂ©sence dans ce livre, tandis que le ïŹchier .ïŹa correspondant sera disponible en ligne. Pour exploiter un script de lâouvrage, il vous sufïŹra dâouvrir le ïŹchier dâextension .ïŹa, sans aucune manipulation supplĂ©mentaire. En revanche, si vous souhaitez utiliser un script du livre dans un nouveau document Flash CS3, il faudra que ce document soit de type ActionScript 2 pour que le script soit compatible. Remarque Pour dĂ©velopper en ActionScript 1 ou 2 Ă partir de Flash CS3, vous devez sĂ©lectionner Fichier Flash (ActionScript 2.0) lors de la crĂ©ation dâun nouveau document. Les diffĂ©rents niveaux de dĂ©veloppement en ActionScript Quelle est la crĂ©dibilitĂ© de lâauteur face aux propos qui vont suivre ? En tant quâenseignant qui dispense des cours en ActionScript 2 et ActionScript 3, et auteur dâouvrages traitant des deux versions du langage, jâai conscience des diffĂ©rences de niveaux qui existent entre les individus en matiĂšre de programmation. Il est donc inutile dâessayer dâenseigner lâActionScript 3 Ă ceux qui auront plus de facilitĂ©s Ă apprendre lâActionScript 1 ou 2. Lâouvrage que vous avez entre les mains est sorti aprĂšs la version CS3 de Flash. Vous pourriez en toute lĂ©gitimitĂ© vous demander si les scripts de ce livre sont compatibles avec cette nouvelle version et quel est le public visĂ©. Rassurez-vous, si lâauteur et les Ă©ditions Eyrolles ont dĂ©cidĂ© dâĂ©diter une nouvelle version de cet ouvrage, câest parce que Flash CS3 utilise lâActionScript 1 et 2, et lâActionScript 3. Dans ce cas, oĂč sont les diffĂ©rences ? VIII
10.
07 7:29 07 Avant-propos ActionScript
1 et 2 Aujourdâhui, face Ă lâActionScript 3, peut-on afïŹrmer que lâActionScript 1 et lâActionScript 2 sont des langages obsolĂštes quâAdobe conserve dans un souci de compatibilitĂ© ou sont-ils encore fonctionnels et utiles ? Il est intĂ©ressant de rĂ©pondre Ă cette question par une sĂ©rie dâautres interrogations : âą Est-il nĂ©cessaire de faire appel Ă un architecte et/ou un menuisier pour fabriquer soimĂȘme une Ă©tagĂšre ? âą Est-il nĂ©cessaire de faire appel Ă un maquettiste et un imprimeur pour rĂ©aliser un fairepart de naissance, etc. ? âą Est-il nĂ©cessaire de faire appel Ă un Ă©lectricien pour installer un rĂ©seau Ă©lectrique dans une piĂšce ? En fonction de vos compĂ©tences, peut-ĂȘtre pourriez-vous fabriquer vous-mĂȘme cette Ă©tagĂšre et concevoir un faire-part de naissance, mais la mise en place de lâinstallation Ă©lectrique pourrait ĂȘtre plus difïŹcile. Quâen est-il de vos compĂ©tences en matiĂšre de programmation ? Ătes-vous un professionnel dans ce domaine ou ressentez-vous un besoin plus ou moins ponctuel en matiĂšre de dĂ©veloppement en ActionScript ? Nous souhaitons ainsi vous montrer que vous ne devez pas avoir de complexes Ă dĂ©velopper en ActionScript 1 ou 2 plutĂŽt quâen ActionScript 3, ce dernier nĂ©cessitant de rĂ©elles compĂ©tences en programmation, ainsi quâune aptitude Ă apprĂ©hender des notions difïŹciles et souvent abstraites, liĂ©es Ă la programmation orientĂ©e objet. En tant quâenseignant depuis prĂšs de quinze ans, jâai pu constater Ă quel point chacun dâentre nous est plus ou moins rĂ©ceptif aux informations qui peuvent lui ĂȘtre dĂ©livrĂ©es. Nous possĂ©dons tous des blocages conscients ou inconscients, des facilitĂ©s, des acquis et des lacunes, liĂ©s Ă notre histoire respective, et câest pourquoi chacun apprend plus ou moins vite... Dâailleurs, si lâaccĂšs au dĂ©veloppement informatique Ă©tait si facile et si Ă©vident, la sociĂ©tĂ© Adobe nâaurait pas dĂ©cidĂ© de conserver trois versions du langage ActionScript. Avant dâaller plus loin, tentons dâexpliquer ce qui diffĂšre entre ActionScript 1 et ActionScript 2. Rappelons pour commencer que la version 2 de lâActionScript est sortie en 2003 avec lâarrivĂ©e de Flash MX 2004. La syntaxe pointĂ©e, apparue en 2002 avec Flash MX, existait alors dĂ©jĂ . Contrairement Ă ce que beaucoup soutiennent, lâActionScript 2 ne se caractĂ©rise pas par la syntaxe pointĂ©e. Il est donc inexact dâafïŹrmer que les gestionnaires de type on(press) relĂšvent de lâActionScript 1 et ceux de type instance.onPress de lâActionScript 2. Ce qui caractĂ©rise rĂ©ellement lâActionScript 2, câest le fait de pouvoir Ă©crire ses propres classes dans des ïŹchiers externes (dont lâextension est .as). Pour ces deux premiĂšres versions du langage, le vocabulaire est ainsi commun Ă 99 %, et câest dans la façon de dĂ©velopper et dâĂ©crire les scripts quâil faut distinguer ActionScript 1 et ActionScript 2. Pour ĂȘtre plus prĂ©cis, on parle de programmation orientĂ©e objet en ActionScript 2, alors quâen ActionScript 1, on parle de programmation structurĂ©e ou sĂ©quentielle. Cet ouvrage est compatible avec ActionScript 1 et ActionScript 2 puisque les lignes dâinstructions sont valables pour les deux versions du langage. Alors que IX
11.
t 2007 7:29
07 150 scripts pour Flash CS3 lâActionScript 3 est sorti, si vous avez achetĂ© ce livre, câest que vous nâaurez sĂ»rement pas besoin de vous lancer dans la programmation orientĂ©e objet. Remarque Adobe ne mentionne que Fichier Flash (ActionScript 2.0) lorsque vous souhaitez crĂ©er un nouveau document car câest le mĂȘme type de document pour lâActionScript 1 et lâActionScript 2. Seule lâapproche dans la programmation diffĂšre comme nous lâavons expliquĂ© plus haut. ActionScript 3 Comme nous lâĂ©voquions dans le paragraphe prĂ©cĂ©dent, câest votre besoin en matiĂšre de dĂ©veloppement qui a motivĂ© votre choix et vous a poussĂ© Ă acheter ce livre. MĂȘme si en ActionScript 3 il est encore possible de programmer de maniĂšre structurĂ©e, la syntaxe nâen est pas pour autant accessible. Par ailleurs, sachez que le vocabulaire diffĂšre complĂštement entre lâActionScript 1, 2 et 3. Pour avoir un aperçu de ce dernier et vous rendre compte des diffĂ©rences au travers de nombreux exemples, rendez-vous sur le site www.yazo.net. Bouton ou clip ? Nous utiliserons parfois le terme Bouton pour dĂ©signer une occurrence sur laquelle lâutilisateur peut cliquer. Il sâagira dans 99,9 % des cas dâoccurrences de clips. Il est trĂšs important que vous compreniez dĂšs Ă prĂ©sent que lâutilisation des symboles de type Bouton est gĂ©nĂ©ralement dĂ©conseillĂ©e. Il est en effet impossible de dĂ©ïŹnir une variable dans lâoccurrence dâun bouton ou dâutiliser les mĂ©thodes de la classe MovieClip(). Ayez donc le rĂ©ïŹexe de crĂ©er des symboles de type Clip et non de type Bouton pour crĂ©er dynamiquement vos interfaces. Doit-on utiliser les composants ? Si vous dĂ©marrez en ActionScript, la rĂ©ponse Ă cette question est embarrassante ! Pourquoi programmer ce qui existe dĂ©jĂ , me direz-vous ? Les composants vous Ă©vitent en effet de redĂ©velopper ce qui lâa dĂ©jĂ Ă©tĂ© par dâautres que vous : menus, textes dĂ©ïŹlants, Ă©lĂ©ments de contrĂŽle de mĂ©dias, calendriers, barres de chargement, etc. Mais lorsque vous apprenez une langue, est-il prĂ©fĂ©rable de retenir des listes dâexpressions ou dâapprendre sa grammaire et son vocabulaire ? En fait, il est fortement conseillĂ© dâapprendre dâabord lâActionScript sans faire appel aux composants, mĂȘme si vous devez redĂ©velopper ce qui lâa dĂ©jĂ Ă©tĂ©, car votre objectif principal est de maĂźtriser ce langage. Utiliser des morceaux de code que vous ne comprendrez que dans leur contexte ne vous fera pas progresser. Il vous faudra donc connaĂźtre les X
12.
150 scripts Livre
Page XI Lundi, 20. ao t 2007 7:29 07 Avant-propos notions Ă©lĂ©mentaires, telles que les techniques de lâalgorithme, les gestionnaires, les mĂ©thodes de la classe MovieClip() et les classes intĂ©grĂ©es. En revanche, dĂšs lors que vous aurez compris les grands mĂ©canismes de lâActionScript et ceux des composants, ne rĂ©inventez pas la roue ! Structure de lâouvrage Le livre sâarticule autour de cinq grandes parties. La premiĂšre partie vous prĂ©sentera des animations dĂ©diĂ©es aux techniques relatives au contrĂŽle des Ă©lĂ©ments composant une interface. Vous dĂ©couvrirez ainsi diffĂ©rents types de menus et boutons, des scripts de contrĂŽle du dĂ©placement dâoccurrences sur la scĂšne, des techniques de construction dynamique de lâinterface, et bien dâautres encore. La deuxiĂšme partie est consacrĂ©e Ă la dĂ©couverte des techniques de contrĂŽle des mĂ©dias. Il est conseillĂ© de se rĂ©fĂ©rer dans un premier temps aux explications donnĂ©es en annexe de ce livre si vous ne connaissez pas la technologie Flash Media Server (anciennement Flash Communication Server). La troisiĂšme partie est trĂšs importante car elle vous permettra de comprendre les contraintes de traitement et de mise en page du texte dans une animation. La quatriĂšme partie vous dĂ©montrera que la rĂ©alisation de jeux en Flash ne prĂ©sente pas forcĂ©ment de difïŹcultĂ©s particuliĂšres. Nous avons principalement retenu des jeux pour enfants qui sont utilisĂ©s dans de nombreux sites, ainsi que des jeux plus classiques de tir, de grattage et de machine Ă sous. En simulant un jeu de dames en rĂ©seau, vous dĂ©couvrirez Ă©galement comment crĂ©er un jeu multijoueur. EnïŹn, la cinquiĂšme partie est dĂ©diĂ©e aux techniques de contrĂŽle de la scĂšne dâune animation. En annexe, vous trouverez des explications et des scripts (entiers ou partiels) rĂ©currents qui vous sont proposĂ©s tout au long de lâouvrage. Nous avons en effet prĂ©fĂ©rĂ© regrouper les explications communes Ă plusieurs animations que dâexpliquer plusieurs fois le mĂȘme point dans diffĂ©rentes analyses et augmenter ainsi inutilement le volume de ce livre. Structure dâune Ă©tude de cas Comme vous pourrez le constater, la prĂ©sentation dâune animation Ă lâautre est toujours identique : elle sâappuie sur une structure prĂ©cise qui facilite la comprĂ©hension de lâanalyse des scripts. XI
13.
150 scripts Livre
Page XII Lundi, 20. ao t 2007 7:29 07 150 scripts pour Flash CS3 âą Titre de lâanimation Un petit texte de prĂ©sentation explique lâintĂ©rĂȘt de lâanimation et son fonctionnement dans certains cas. Figure 1 LĂ©gende des ïŹgures Rappel Pour certaines animations, nous rappelons une ou plusieurs bases, et nous vous mettons en garde sur les piĂšges Ă Ă©viter. Description du ïŹchier Indication de la version de Flash Player compatible avec lâanimation Chemin dâaccĂšs : NomDunDossierPrincipal/NomDunSousDossier/NomDeLanimation.ïŹa Nous vous dĂ©crivons ici la construction de lâinterface de lâanimation, câest-Ă -dire les occurrences et textes dynamiques prĂ©sents sur la scĂšne, et indiquons leurs noms. Dans certaines animations, nous Ă©numĂ©rons des procĂ©dures, sous formes de listes numĂ©rotĂ©es. Par exemple : 1. ProcĂ©dure 1. 2. ProcĂ©dure 2. 3. ProcĂ©dure 3. Script Le script vous est ensuite prĂ©senté⊠var menus = ["Destinations", "Tarifs", "Promotions", "Horaires"]; var destinations = ["Asie", "AmĂ©rique du sud", "AmĂ©rique central", "Etats-Unis", "Europe"]; âŠsâen suit lâanalyse XII
14.
150 scripts Livre
Page XIII Lundi, 20. ao t 2007 7:29 07 Avant-propos Analyse Ligne 1 : dans certains cas, nous analysons ou expliquons le script ligne par ligne. Rappel Quelques petits commentaires ou rappels peuvent venir apporter une aide complĂ©mentaire. Lignes 7 Ă 9 : certaines lignes dâinstructions sont analysĂ©es et/ou commentĂ©es globalement. Bogues Ă©ventuels Pour certaines animations, nous vous mettons en garde sur des risques dâerreurs et/ou nous insistons sur lâimportance de certaines lignes. TĂ©lĂ©chargement des animations utilisĂ©es dans cet ouvrage Vous pouvez tĂ©lĂ©charger toutes les animations que nous dĂ©crivons dans ce livre Ă lâadresse suivante : www.editions-eyrolles.com. XIII
15.
150 scripts Livre
Page XIV Lundi, 20. ao t 2007 7:29 07
16.
150 scripts Livre
Page XV Lundi, 20. ao t 2007 7:29 07 Table des matiĂšres INTRODUCTION Se prĂ©parer Ă la lecture de lâouvrage . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Utilisation du XML dans Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 CrĂ©er un document XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Charger un document XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lire un nĆud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lire un attribut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Informations complĂ©mentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 6 8 11 Premier exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeuxiĂšme exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 16 InterprĂ©tation du nom dâune occurrence . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Gestion des lignes dâinstructions contenues dans une boucle for() . . . 21 Le sens du mot-clĂ© this selon les contextes . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Lâinterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 PARTIE I CHAPITRE 1 Optimisation dâune animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Techniques dâoptimisation dâune production en Flash . . . . . . . . . . . . . . 27 Prise en main du logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
17.
150 scripts Livre
Page XVI Lundi, 20. ao t 2007 7:29 07 150 scripts pour Flash CS3 Avant de dĂ©marrer un projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Optimisation via lâActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . En cours de projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PiĂšges et autres bogues rĂ©currents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 30 32 32 RĂ©aliser un prĂ©chargement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 CHAPITRE 2 Les menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Barre de menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Menu dĂ©roulant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Menu animĂ© avec la classe Tween() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Menu dĂ©roulant avec le composant MenuBar . . . . . . . . . . . . . . . . . . . . . . . 48 Menu en accordĂ©on animĂ© . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Menu en accordĂ©on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Menu contextuel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Ronde de boutons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Le composant Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Navigation par onglets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Navigation dynamique par onglets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Construction dynamique du menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 CHAPITRE 3 Les boutons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 CrĂ©er un bouton bascule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 DĂ©sactiver un bouton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 RĂ©aliser un double-clic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 CrĂ©er un bouton avec un effet dâenfoncement . . . . . . . . . . . . . . . . . . . . . . 82 CHAPITRE 4 Les variateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Variateur linĂ©aire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Variateur circulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XVI 85 89
18.
150 scripts Livre
Page XVII Lundi, 20. ao t 2007 7:29 07 Table des matiĂšres Variateur de couleur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Variateur de couleur avec la classe geom.ColorTransform . . . . . . . . . . . . 95 CHAPITRE 5 Les paniers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Panier sous forme de liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Drag & drop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Drag & drop avec gestion de lâinventaire . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 CHAPITRE 6 Les Ă©lĂ©ments de formulaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 RĂ©alisation dâun formulaire avec les composants Flash . . . . . . . . . . . . . . 109 RĂ©alisation dâun QCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 RĂ©alisation dâun QCM avec un ïŹchier XML . . . . . . . . . . . . . . . . . . . . . . . . 117 CHAPITRE 7 Scroll et panoramiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Scroll Ă vitesse constante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 DĂ©placement dâun point Ă un autre dans un plan panoramique . . . . . . . 123 DĂ©ïŹlement de plusieurs plans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 CHAPITRE 8 Les transitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Transition entre deux images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Transition au chargement dâune animation . . . . . . . . . . . . . . . . . . . . . . . . 132 Transition en utilisant la classe TransitionManager() . . . . . . . . . . . . . . . . 134 CHAPITRE 9 Constructions dynamiques dâinterfaces . . . . . . . . . . . . . . . . . . . . . . . 137 Placement dynamique de symboles sur la scĂšne . . . . . . . . . . . . . . . . . . . . 137 Travailler avec le nom des occurrences . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 Utilisation de ïŹchiers XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 XVII
19.
150 scripts Livre
Page XVIII Lundi, 20. ao t 2007 7:29 07 150 scripts pour Flash CS3 CrĂ©er un symbole modĂšle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 TracĂ© dâune carte gĂ©ographique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Imbriquer des animations les unes dans les autres. . . . . . . . . . . . . . . . . . . Travailler avec les coordonnĂ©es de la souris . . . . . . . . . . . . . . . . . . . . . . . . CrĂ©ation dâune palette de couleur avec getPixel() . . . . . . . . . . . . . . . . . . . Utilisation dâune palette de couleur utilisant getPixel() . . . . . . . . . . . . . . 152 155 157 158 161 CHAPITRE 10 ContrĂŽle et afïŹchage du temps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 RĂ©aliser une horloge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 RĂ©aliser un compte Ă rebours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 RĂ©aliser un chronomĂštre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Calculer une date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 DĂ©velopper un calendrier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 Temporiser une action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 RĂ©pĂ©ter une action Ă intervalles rĂ©guliers . . . . . . . . . . . . . . . . . . . . . . . . . . 187 RĂ©aliser un planning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Planning sur plusieurs mois . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 CHAPITRE 11 DĂ©placement de personnages ou dâobjets . . . . . . . . . . . . . . . . . . . . DĂ©placement par clics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DĂ©placement par glisser-dĂ©placer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DĂ©placement par glisser-dĂ©placer avec perspective . . . . . . . . . . . . . . . . . . DĂ©placement avec ralentissement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Yeux qui suivent la souris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RĂ©aliser une loupe sur un plan ou une photo . . . . . . . . . . . . . . . . . . . . . . . Tester la collision entre deux occurrences . . . . . . . . . . . . . . . . . . . . . . . . . . ĂlasticitĂ© dans un mouvement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 221 ĂlasticitĂ© dans un mouvement avec la classe Tween . . . . . . . . . . . . . . . . . . 222 Simuler la gravitĂ© . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 Faire tomber de la pluie ou de la neige . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 ContrĂŽle par le clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XVIII 199 231 203 208 211 213 214 217
20.
150 scripts Livre
Page XIX Lundi, 20. ao t 2007 7:29 07 Table des matiĂšres SkyScraper dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 SkyScraper dynamique avec tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 CHAPITRE 12 La scĂšne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 Informations et contrĂŽle de la scĂšne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 CHAPITRE 13 Enregistrement de scores et autres donnĂ©es . . . . . . . . . . . . . . . . . 243 Utilisation des cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 Enregistrement dans une base MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 Obtenir un identiïŹant unique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 PARTIE II Les mĂ©dias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 CHAPITRE 14 ContrĂŽle des mĂ©dias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 RĂ©alisation dâun diaporama dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 RĂ©alisation dâun diaporama dynamique avec un ïŹchier XML . . . . . . . . . 260 RĂ©alisation dâun diaporama dynamique avec un ïŹchier XML et de nombreuses photos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RĂ©alisation dâun lecteur MP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RĂ©alisation dâun lecteur vidĂ©o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diffuser une vidĂ©o en streaming (Flash Media Server) . . . . . . . . . . . . . . RĂ©alisation dâun module de visioconfĂ©rence (Flash Media Server) . . . . RĂ©alisation dâun module de confĂ©rence (Flash Media Server) . . . . . . . . . ContrĂŽler une sĂ©quence QuickTime Ă partir dâune piste Flash . . . . . . . Interaction du niveau dâentrĂ©e du microphone et de la scĂšne . . . . . . . . . 261 266 271 273 274 279 281 283 Sous-titrer une vidĂ©o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 Synchroniser un son avec des textes et des images . . . . . . . . . . . . . . . . . . 290 Synchroniser un son au format FLV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 XIX
21.
150 scripts Livre
Page XX Lundi, 20. ao t 2007 7:29 07 150 scripts pour Flash CS3 CHAPITRE 15 Chat et RSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 CrĂ©ation dâun chat avec Flash Media Server . . . . . . . . . . . . . . . . . . . . . . . . 297 CrĂ©ation dâun lecteur de ïŹux RSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Lecteur de ïŹux RSS avec un menu local dĂ©roulant . . . . . . . . . . . . . . . . . . . 308 Lecteur de ïŹux RSS sans composant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 PARTIE III Manipulation du texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 CHAPITRE 16 Mise en forme du texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 Mettre du texte en forme (classe TextFormat()) . . . . . . . . . . . . . . . . . . . . . Mettre du texte en forme (classe TextFormat() et CSS) . . . . . . . . . . . . . . . ContrĂŽler la casse et la nature dâun texte . . . . . . . . . . . . . . . . . . . . . . . . . . . VĂ©riïŹcation de la saisie dâun texte en cours de frappe . . . . . . . . . . . . . . . . Le composant DataGrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 322 327 329 332 CHAPITRE 17 Traitement du texte et des variables . . . . . . . . . . . . . . . . . . . . . . . . . . VĂ©riïŹer la validitĂ© dâune adresse e-mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 Faire dĂ©ïŹler un texte avec ascenseur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 Faire dĂ©ïŹler un texte avec ascenseur des lignes cliquables . . . . . . . . . . . . 343 Faire dĂ©ïŹler un texte Description du ïŹchier . . . . . . . . . . . . . . . . . . . . . . . . 348 RĂ©aliser un systĂšme de mot de passe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350 RĂ©aliser un module de recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 Rendre un texte cliquable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 GĂ©rer les tabulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 AfïŹchage en mode Telex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 AfïŹchage en mode AĂ©roport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 AfïŹchage de lettres glissant sur la scĂšne . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 AfïŹchage dâun texte clignotant avec le ïŹltre GlowFilter . . . . . . . . . . . . . XX 335 368
22.
150 scripts Livre
Page XXI Lundi, 20. ao t 2007 7:29 07 Table des matiĂšres AfïŹchage dâun texte qui vibre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 AfïŹchage dâun texte qui explose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 CHAPITRE 18 Manipulation des tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 AfïŹcher un tableau (array) sous forme de liste . . . . . . . . . . . . . . . . . . . . . 377 RĂ©aliser un quadrillage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 RĂ©aliser une grille de calculs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 Manipuler les tableaux associatifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 PARTIE IV Les jeux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 CHAPITRE 19 Jeux pour enfants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 Jeu du Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 Puzzle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 Puzzle avec chargement dynamique de photos . . . . . . . . . . . . . . . . . . . . . . 404 Jeu de coloriage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 Jeu de mĂ©moire sonore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 Jeu du morpion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 Jeu du serpent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 Jeu du taquin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 Jeu du pendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 Jeu du pendu avec plusieurs parties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 CHAPITRE 20 Autres jeux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 Machine Ă sous (jackpot) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 Jeu de tir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 Jeu de grattage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 XXI
23.
150 scripts Livre
Page XXII Lundi, 20. ao t 2007 7:29 07 150 scripts pour Flash CS3 Jeu de grattage avec utilisation d'un masque . . . . . . . . . . . . . . . . . . . . . . . . 453 Jeu de dames en rĂ©seau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 Jeu du chemin le plus court . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 ModĂšles pour le jeu du chemin le plus court . . . . . . . . . . . . . . . . . . . . . . . . . 468 Exercice pĂ©dagogique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469 PARTIE V Autres fonctionnalitĂ©s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473 CHAPITRE 21 Impression, e-mail et fenĂȘtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 Envoyer un e-mail Ă partir de Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 Imprimer une animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476 Centrer une animation dans la fenĂȘtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 Redimensionner la fenĂȘtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 Ouvrir une pop-up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 Appeler une fonction JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 CHAPITRE 22 System.capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 ConnaĂźtre la langue de lâordinateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 ConnaĂźtre le systĂšme dâexploitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 ConnaĂźtre la version du Flash Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 CHAPITRE 23 CD-Rom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CrĂ©er un projecteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 ContrĂŽles dâune projection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXII 495 497
24.
150 scripts Livre
Page XXIII Lundi, 20. ao t 2007 7:29 07 Table des matiĂšres ANNEXE Notions complĂ©mentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501 Flash Media Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comment ça marche ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CrĂ©er une connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GĂ©nĂ©rer un ïŹux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Envoyer et recevoir un ïŹux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les SharedObject avec Flash Media Server . . . . . . . . . . . . . . . . . . . . . . . . . Ătablir une connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . indexOf() ou la recherche dâune chaĂźne . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 503 504 505 506 Mise en forme du texte avec la classe TextFormat() . . . . . . . . . . . . . . . . . . 513 Changer la couleur dâune occurrence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Classe Color() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MĂ©thode ColorTransform() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514 515 515 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517 508 509 511 XXIII
25.
150 scripts Livre
Page XXIV Lundi, 20. ao t 2007 7:29 07
26.
150 scripts Livre
Page 1 Lundi, 20. ao t 2007 7:29 07 Introduction Se prĂ©parer Ă la lecture de lâouvrage Comme nous lâĂ©voquions dans lâavant-propos, nous prĂ©fĂ©rons nous assurer que vous maĂźtrisez certaines bases de lâActionScript avant de vous lancer dans la lecture de cet ouvrage. Nous vous encourageons donc vivement Ă parcourir les quelques pages qui suivent car elles prĂ©sentent des rappels Ă©lĂ©mentaires nĂ©cessaires pour une bonne comprĂ©hension des analyses des Ă©tudes de cas proposĂ©es dans ce livre. En ïŹn dâouvrage, lâannexe vous fournira des explications communes Ă plusieurs Ă©tudes de cas. Ă lâinverse, cette introduction vous offre en amont un rappel des notions Ă©lĂ©mentaires telles que : âą lâutilisation du XML dans Flash ; âą lâinterprĂ©tation du nom dâune occurrence ; âą la gestion des lignes dâinstructions contenues dans une boucle for() ; âą le sens du mot-clĂ© this selon les contextes. Il ne sâagit ni de simples introductions, ni dâexplications acadĂ©miques exhaustives. Ces notions sont primordiales pour un dĂ©veloppeur Flash et nous les utiliserons trĂšs souvent dans nos Ă©tudes de cas, câest pourquoi nous commencerons par les Ă©tudier ensemble ici.
27.
150 scripts Livre
Page 2 Lundi, 20. ao t 2007 7:29 07 150 scripts pour Flash CS3 Utilisation du XML dans Flash Comprendre le XML dans Flash Aujourdâhui, il est trĂšs difïŹcile de concevoir un dĂ©veloppement sans faire appel Ă un ïŹchier XML, mais Ă quoi sert exactement cette technologie ? Lorsque vous avez besoin de manipuler des donnĂ©es dans une animation Flash, dans le but de les traiter ou de les afïŹcher sur la scĂšne au moment de la lecture dâun ïŹchier .swf, plusieurs solutions sâoffrent Ă vous. âą Les variables peuvent contenir ces informations, mais il en faudra autant que vous avez de valeurs Ă stocker/traiter. Cette technique nâest donc pas adaptĂ©e. âą Les tableaux prĂ©sentent lâavantage de pouvoir contenir plusieurs valeurs, mais le manque de souplesse dans le traitement des donnĂ©es contenues fait de cette technique une solution inadaptĂ©e. Dans ce cas, quelle autre possibilitĂ© avons-nous ? Dans certaines applications, lâutilisation dâun ïŹchier texte contenant des paires variable = valeur & variable2 = valeur⊠pourrait nous sufïŹre, mais cette technique reste proche de celle du tableau. La meilleure des solutions reste tout de mĂȘme lâutilisation du XML. Malheureusement, cette derniĂšre solution a mauvaise rĂ©putation auprĂšs des novices car elle semble compliquĂ©e par lâapparence des documents quâil est nĂ©cessaire de gĂ©nĂ©rer en XML et des lignes dâinstructions en ActionScript quâil faut saisir. Relevons le dĂ©ïŹt ! Le principe dâun ïŹchier XML est de contenir des balises qui en imbriquent dâautres. Avant dâaller plus loin et dâĂȘtre trop technique, commençons par ce petit exemple Ă la portĂ©e de tout le monde, y compris les nĂ©ophytes. Imaginons un bĂątiment, celui dâune bibliothĂšque, qui contiendrait quatre Ă©tages proposant des publications classĂ©es par thĂšmes. Au premier Ă©tage, des livres pour les jeunes, au deuxiĂšme, des publications scientiïŹques, au troisiĂšme des romans et CD et enïŹn au dernier Ă©tage les publications de presse. Voici Ă quoi pourrait ressembler la structure principale du document XML. <Bibliotheque> <Accueil></Accueil> <Jeunes></Jeunes> <Sciences></Sciences> <Loisirs></Loisirs> <Presse></Presse> </Bibliotheque> Vous remarquerez quâune balise ouverte est obligatoirement fermĂ©e. Si elle ne lâest pas, le document nâest pas valide et il sera alors impossible de le parcourir, comme dans lâexemple suivant oĂč la balise <Sciences> est mal fermĂ©e. <Bibliotheque> <Accueil></Accueil> <Jeunes></Jeunes> 2
28.
150 scripts Livre
Page 3 Lundi, 20. ao t 2007 7:29 07 Se prĂ©parer Ă la lecture de lâouvrage Introduction <Sciences><Sciences> <Loisirs></Loisirs> <Presse></Presse> </Bibliotheque> Remarque Parser un document, revient Ă lire et interprĂ©ter le contenu dâun document. Le terme « arbre » est Ă©galement un synonyme de « document XML ». SimpliïŹons davantage notre premier exemple aïŹn dây ajouter des valeurs. <Bibliotheque> <Accueil>1</Accueil> <Jeunes>3</Jeunes> <Sciences>2</Sciences> </Bibliotheque> Les trois chiffres que nous venons dâajouter correspondent au personnel affectĂ© Ă chaque Ă©tage. Avant dâaller plus loin, apportons un premier mot de vocabulaire. Le nĆud est un terme qui dĂ©signe un niveau dans un document. Il contient deux balises, une qui indique son ouverture et une autre qui indique sa fermeture. Entre les deux balises, on place une valeur. <Jeunes>3</Jeunes> Lâexemple ci-dessus est donc un nĆud dont le nom de balise est Jeunes, il contient une valeur, Ă savoir le chiffre 3. Il existe une autre syntaxe qui ne contient quâune seule balise. Dans ce cas, elle ne peut contenir que des attributs, mais pas de valeurs. <Jeunes effectifs= "3"/> Dans lâexemple ci-dessus, la balise dont le nom est Jeunes contient un attribut intitulĂ© effectifs dont la valeur est 3. Dois-je utiliser plutĂŽt des valeurs ou attributs ? On se pose souvent cette question. Ne choisissez pas de crĂ©er tous vos documents XML avec des nĆuds contenant des valeurs sans attributs et inversement. Selon la nature de vos besoins, vous combinerez dâailleurs sĂ»rement les deux. Vous dĂ©couvrirez au travers des diffĂ©rentes Ă©tudes de cas de ce livre, que les exemples sont tous trĂšs diffĂ©rents. Remarque Lâavantage dâutiliser les attributs est de pouvoir faire rĂ©fĂ©rence Ă un nom sans se soucier de sa position. 3
29.
150 scripts Livre
Page 4 Lundi, 20. ao t 2007 7:29 07 150 scripts pour Flash CS3 Avant dâapprendre Ă charger un document XML dans un SWF, comment fait-on pour le crĂ©er ? CrĂ©er un document XML La technique est trĂšs simple, commencez par lancer un Ă©diteur de texte qui gĂšre de prĂ©fĂ©rence lâUTF-8, puis suivez ces instructions : 1. CrĂ©ez un nouveau document. 2. Saisissez le script simpliïŹĂ© (5 lignes de script ïŹgurant page 3). 3. Enregistrez votre document sous le nom biblio.xml. Remarque Assurez-vous que lâencodage du ïŹchier est en Unicode ou en UTF-8. Utilisez le bouton Options ou le menu local dĂ©roulant dans la fenĂȘtre d'enregistrement pour dĂ©ïŹnir ou vĂ©riïŹer le format. Parfois, ce rĂ©glage doit se faire dans les menus du logiciel ou dans sa barre d'outils, car il sâagit dâun attribut ou dâune propriĂ©tĂ© de la page. Les spĂ©cialistes en XML pourraient crier au scandale ! « Il ne parle mĂȘme pas de lâencodage, ni de la version du XML quâil faut prĂ©ciser sur la premiĂšre ligne du document ». Oui, ce document est vraiment simpliïŹĂ©, mais nous devons apprendre le strict minimum pour commencer. Cette structure fonctionne trĂšs bien, il nây a aucune raison pour que nous soyons exhaustif Ă ce niveau-lĂ des explications. Charger un document XML Quel est le code en ActionScript qui permet de charger le contenu de ce document dans un SWF ? var charge = new XML(); charge.load("biblio.xml"); VoilĂ , câest tout ! Le contenu du ïŹchier biblio.xml est Ă prĂ©sent dans le SWF et plus particuliĂšrement dans lâinstance intitulĂ©e charge qui est comparable Ă une variable. Il aura sufïŹ de crĂ©er une instance de la classe XML avec le constructeur new puis de charger le ïŹchier au moyen de la mĂ©thode load() de la classe XML(). Le player Flash a chargĂ© le contenu du ïŹchier, puis il a lu toutes les lignes du document. Remarque La premiĂšre ligne dâun document XML porte le numĂ©ro d'index 0. Dans notre exemple, nous avons deux nĆuds dont les numĂ©ros d'index sont 0 et 1. 4
30.
150 scripts Livre
Page 5 Lundi, 20. ao t 2007 7:29 07 Se prĂ©parer Ă la lecture de lâouvrage Introduction Avant de continuer les explications, nous devons rĂ©soudre un premier problĂšme. Si un saut de paragraphe a Ă©tĂ© insĂ©rĂ© entre les deux lignes Jeunes et Sciences, est-ce que le player Flash doit comptabiliser la ligne vide comme un nĆud ? <Bibliotheque> Jeunes>3</Jeunes> <Sciences>2</Sciences> </Bibliotheque> Est-ce que le nĆud <Sciences> porte lâindex 1 ou 2 ? Il serait trĂšs difïŹcile de se passer des sauts de paragraphe gĂ©nĂ©rĂ©s volontairement pour espacer les lignes, structurer ainsi lâarbre et faciliter sa lecture. Si une ligne de commentaire est ajoutĂ©e, comment prĂ©ciser au player Flash quâil ne sâagit pas dâun nĆud ? Tout simplement en lui signiïŹant que les blancs (lignes vides et commentaires) doivent ĂȘtre ignorĂ©s. var charge = new XML(); charge.load("biblio.xml"); charge.ignoreWhite = true; Attention Nâoubliez pas de saisir un W majuscule au milieu de la propriĂ©tĂ© ignoreWhite. Ă ce niveau-lĂ de lâexplication, nous avons bien compris que le contenu du document XML se trouve dans charge. Mais comment lire les nĆuds contenus dans lâinstance ? Avant de rĂ©pondre Ă cette question, une autre se pose. Vous constaterez rapidement que certains documents XML peuvent ĂȘtre trĂšs longs, donc trĂšs lourds Ă charger. Lorsque la ligne dâinstruction charge.load("biblio.xml") sâexĂ©cute, les donnĂ©es sont-elles dans la mĂ©moire vive de lâordinateur en une fraction de seconde ? Tout dĂ©pend de la vitesse de votre connexion Ă Internet et du poids du document. Quoi quâil en soit, le temps de chargement du ïŹchier XML sera beaucoup plus long que le temps dâexĂ©cution des lignes dâinstructions de votre script. En partant de ce constat, il est plus facile de comprendre pourquoi nous nâavons pas le droit dâajouter la ligne suivante : var charge = new XML(); charge.load("biblio.xml"); charge.ignoreWhite = true; vAffichage = charge; La variable vAffichage est celle dâun texte dynamique sur la scĂšne. En exĂ©cutant ce script, nous pourrions nous attendre Ă ce que le contenu de lâinstance vienne sâafïŹcher sur la scĂšne. Et bien non ! Il faut dâabord sâassurer que le contenu du document XML est bien chargĂ© en mĂ©moire vive de votre ordinateur avant de tenter de faire appel Ă lui. Nous devons donc ajouter ce gestionnaire : var charge = new XML(); charge.load("biblio.xml"); charge.ignoreWhite = true; 5
31.
150 scripts Livre
Page 6 Lundi, 20. ao t 2007 7:29 07 150 scripts pour Flash CS3 charge.onLoad = function() { vAffichage = charge; }; Au moment oĂč le chargement est terminĂ©, la variable vAffichage va enïŹn pouvoir contenir charge. VoilĂ , si vous nâĂȘtes pas sĂ»r(e) dâavoir tout compris, nous vous invitons vivement Ă relire ces explications car nous allons Ă prĂ©sent essayer de comprendre comment lire un nĆud. Lire un nĆud Attention Avant toute chose, il est important que vous sachiez que les nĆuds dâune instance XML fonctionnent sur le mĂȘme principe que les entrĂ©es dâun tableau. Le premier nĆud porte l'index 0. La technique est une fois encore trĂšs simple, soyons mĂ©thodiques et nâallons pas trop vite. Imaginons que nous ayons deux textes dynamiques sur la scĂšne dont les noms de variables sont nbrPersonnesJeunes et nbrPersonnesSciences. Voici Ă quoi devrait ressembler le script de votre animation pour placer le contenu de lâinstance charge sur la scĂšne. Remarque Ă partir de maintenant, nous ne reprenons plus les trois premiĂšres lignes du script, elles seront Ă chaque fois sous-entendues. charge.onLoad = function() { nbrPersonnesJeunes = charge.childNodes[0].childNodes[0]; nbrPersonnesSciences = charge.childNodes[0].childNodes[1]; }; Mais que signiïŹe charge.childNodes[0] ? Pour mieux comprendre, voici le contenu dâun document XML qui nâest pas valide, mais nĂ©anmoins acceptĂ© par Flash. <Bibliotheque> <Jeunes>3</Jeunes> <Sciences>2</Sciences> </Bibliotheque> <Piscine> <Bassin>3</Bassin> <Administratif>2</Administratif> </Piscine> AprĂšs chargement du ïŹchier XML, nous pouvons dire que lâinstance charge contient lâensemble des balises. Donc, nous devons toujours commencer une ligne dâinstruction par charge pour y faire rĂ©fĂ©rence. Maintenant, pourquoi Ă©crire childNodes[0] systĂ©matiquement aprĂšs le nom de lâinstance ? Dans notre exemple dâorigine la premiĂšre et unique 6
32.
150 scripts Livre
Page 7 Lundi, 20. ao t 2007 7:29 07 Se prĂ©parer Ă la lecture de lâouvrage Introduction balise sâintitule Bibliotheque. Il nâexiste pas dâautre balise Ă la racine. Elle porte donc le numĂ©ro dâindex 0, dâoĂč le rĂ©sultat charge.childNodes[0], câest-Ă -dire le nĆud dont lâindex est 0 dans lâinstance charge. Dans le dernier exemple donnĂ©, nous avons deux balises Ă la racine. Bibliotheque et Piscine. Imaginez quâun arbre ait deux troncs Ă la base ! Ce ne serait plus un arbre ! MĂȘme si la nature le tolĂšre sĂ»rement, en XML, cela nâest pas possible. Alors le script qui va suivre est acceptĂ© en ActionScript, mais pas dans les applications qui gĂšrent correctement le XML. nbrPersonnesJeunes = charge.childNodes[0].childNodes[0]; nbrPersonnesBassin = charge.childNodes[1].childNodes[0]; Les deux lignes suivantes vont sâafïŹcher dans les textes dynamiques sur la scĂšne. <Jeunes>3</Jeunes> <Bassin>3</Bassin> Retenons donc que la valeur du premier childNodes ne peut ĂȘtre diffĂ©rente de 0. Pourquoi ne peut-on pas obtenir 3 Ă la place de <Jeunes>3</Jeunes> ? Câest Ă nous dâindiquer au player Flash quâil doit aller plus loin dans lâarborescence. Si nous reprenons donc correctement notre code, voici Ă quoi il doit ressembler : nbrPersonnesJeunes = charge.childNodes[0].childNodes[0].firstChild; nbrPersonnesSciences = charge.childNodes[0].childNodes[1].firstChild; Essayons de traduire ce que comprend le player Flash. charge.Bibliotheque.Jeunes.firstChild; Le mot firstChild revient Ă Ă©crire childNodes[0], câest-Ă -dire la premiĂšre information contenue dans un nĆud. La valeur 3 est donc considĂ©rĂ©e comme un nĆud, tout du moins considĂ©rĂ©e comme la premiĂšre information contenue dans charge.Bibliotheque[0].Jeunes[0]. Imaginons Ă prĂ©sent que les nĆuds <Jeunes> et <Sciences> en contiennent dâautres. <Bibliotheque> <Jeunes> <Personne>Laurence</Personne> <Personne>Lola</Personne> <Personne>Manon</Personne> <Personne>Julie</Personne> </Jeunes> <Sciences> <Personne>Pascale</Personne> <Personne>Celia</Personne> <Personne>Charlene</Personne> </Sciences> </Bibliotheque> Notre ïŹchier XML ne se contente plus de contenir des numĂ©ros indiquant les effectifs, mais des noms de personnes affectĂ©es aux Ă©tages des Jeunes et des Sciences. 7
33.
150 scripts Livre
Page 8 Lundi, 20. ao t 2007 7:29 07 150 scripts pour Flash CS3 Pour lire Julie, il faut donc demander au player Flash de passer par les nĆuds suivants : vResponsable = charge.childNodes[0].childNodes[0].childNodes[3].firstChild; Sur la scĂšne, un texte dynamique dont le nom de variable est vResponsable va afïŹcher le mot Julie. Vous savez Ă prĂ©sent parcourir tout un document. Nous nâaborderons pas dans ce chapitre la combinaison du XML dans Flash avec les boucles for() car de nombreuses Ă©tudes de cas font appel Ă cette combinaison. Nous analyserons la structure du script, mais pour lâinstant, revenons plutĂŽt sur une notion trĂšs intĂ©ressante. JusquâĂ prĂ©sent, nous avons utilisĂ© des valeurs telles que : 3 et Julie, mais que sont les attributs en XML ? Lire un attribut Le document XML suivant prĂ©sente Ă nouveau une partie des effectifs de notre bibliothĂšque, mais sous une forme diffĂ©rente. Imaginons en effet que nous ayons de nombreux nĆuds, câest-Ă -dire de nombreuses lignes. Est-il indispensable dâavoir une valeur pour chaque nĆud ? <Bibliotheque> <Jeunes> <Personne nom="Laurence"/> <Personne nom="Lola"/> <Personne nom="Manon"/> <Personne nom="Julie"/> </Jeunes> </Bibliotheque> Cette syntaxe prĂ©sente lâavantage de simpliïŹer votre document car les lignes y sont moins longues et plus claires dĂšs lors quâon a compris la notion dâattribut. Voici une mĂ©thode pour lire un attribut. 1. Commencez par prĂ©ciser le chemin du nĆud dont vous souhaitez lire un attribut. vResponsable = charge.childNodes[0].childNodes[0].childNodes[3] 2. Ajoutez le mot attributes sĂ©parĂ© par un point. vResponsable = charge.childNodes[0].childNodes[0].childNodes[3].attributes 3. Pour ïŹnir, indiquez le nom de lâattribut. vResponsable = charge.childNodes[0].childNodes[0].childNodes[3].attributes.nom; PrĂ©cisons quâune balise peut contenir plusieurs attributs comme dans lâexemple suivant. <Personne nom="Laurence" age = "35" profession ="Enseignante"/> Si vous le souhaitez, vous pouvez combiner les attributs et les valeurs dans une balise. Voici ce que cela pourrait donner : <Personne age = "37" yeux ="noirs" taille ="165">Laurence</Personne> 8
34.
150 scripts Livre
Page 9 Lundi, 20. ao t 2007 7:29 07 Se prĂ©parer Ă la lecture de lâouvrage Introduction Pointer directement sur un nĆud grĂące Ă la propriĂ©tĂ© idMap Avec lâarrivĂ©e de Flash 8, une nouvelle propriĂ©tĂ© a fait son apparition⊠et quelle propriĂ©tĂ© ! Dans Flash MX 2004 et les versions antĂ©rieures, pour atteindre un nĆud prĂ©cis, vous deviez parcourir toute lâarborescence de votre instance XML. Avec le player Flash 8, vous avez la possibilitĂ© dâutiliser la propriĂ©tĂ© idMap pour pointer directement sur un nĆud qui doit possĂ©der obligatoirement un attribut intitulĂ© id, quel que soit son niveau. Prenons lâexemple dâun ïŹchier intitulĂ© societe.xml dont la structure est la suivante : <Bibliotheque> <Personne id="Marie" nom="Dupond"> <Profession>Enseignante</Profession> <Age>27</Age> </Personne> <Personne id="Marc" nom="Martin"> <Profession>Coursier</Profession> <Age>24</Age> </Personne> <Personne id="JĂ©rĂŽme" nom="Durand"> <Profession>Responsable de dĂ©partement</Profession> <Age>35</Age> </Personne> </Bibliotheque> Ce document contient trois nĆuds enfants de niveau 1 Ă la racine. Chacun possĂšde deux propriĂ©tĂ©s intitulĂ©es id et nom. Pour pointer sur le nĆud 2 de niveau 1 (JĂ©rĂŽme Durand), il faudrait utiliser le script suivant : charge = new XML(); charge.load("societe.xml"); charge.ignoreWhite = true; charge.onLoad = function() { resultat = charge.firstChild.childNodes[2]; }; Il existe une solution plus simple qui fait appel Ă la propriĂ©tĂ© idMap. charge = new XML(); charge.load("societe.xml"); charge.ignoreWhite = true; charge.onLoad = function() { resultat = charge.idMap["JĂ©rĂŽme"]; }; Comme vous pouvez le constater, il est plus aisĂ© de faire rĂ©fĂ©rence Ă une information qui parle davantage quâun numĂ©ro. Attention toutefois Ă certains abus : que se passe-t-il sâil existe plusieurs JĂ©rĂŽme dans notre arborescence ? Et bien ce sera le dernier nĆud qui possĂšde cette valeur dâattribut qui sera retenu. 9
35.
150 scripts Livre
Page 10 Lundi, 20. ao t 2007 7:29 07 150 scripts pour Flash CS3 Par consĂ©quent, utilisez cette technique avec des valeurs qui doivent ĂȘtre uniques dâun nĆud Ă lâautre, telles quâun numĂ©ro de sĂ©curitĂ© social, une clĂ© primaire propre Ă un enregistrement, un code personnel, etc. Notre exemple est volontairement simple pour cette premiĂšre approche du XML. PrĂ©cisons tout de mĂȘme que la propriĂ©tĂ© idMap est Ă©galement trĂšs intĂ©ressante pour les nĆuds dont le niveau est Ă©levĂ©, cela permet de raccourcir les chemins. Voici une comparaison, partons de ce nouveau document. <Bibliotheque> <Jeunes> <Personne id="Marie" nom="Dupond"> <Profession>Enseignante</Profession> <Age>27</Age> </Personne> <Personne id="Marc" nom="Martin"> <Profession>Coursier</Profession> <Age>24</Age> </Personne> <Personne id="JĂ©rĂŽme" nom="Durand"> <Profession>Responsable de dĂ©partement</Profession> <Age>35</Age> </Personne> </Jeunes> <Sciences> <Personne id="Eva" nom="Girondon"> <Profession>En retraite</Profession> <Age>58</Age> </Personne> <Personne id="Daniel" nom="Duvent"> <Profession>En congĂ©s paternitĂ©</Profession> <Age>26</Age> </Personne> <Personne id="Georges" nom="Maltris"> <Profession>En maladie</Profession> <Age>35</Age> </Personne> </Sciences> </Bibliotheque> Pour afïŹcher En retraite dans un texte dynamique intitulĂ© etatActuel sur la scĂšne, voici les deux mĂ©thodes : âą avec utilisation de la propriĂ©tĂ© idMap : charge.onLoad = function() { etatActuel = charge.idMap["Eva"].childNodes[0].firstChild; }; âą avec la rĂ©fĂ©rence Ă un chemin relatif Ă la racine : charge.onLoad = function() { etatActuel = charge.firstChild.childNodes[1].childNodes[0].childNodes[0].firstChild; } 10
36.
150 scripts Livre
Page 11 Lundi, 20. ao t 2007 7:29 07 Se prĂ©parer Ă la lecture de lâouvrage Introduction Informations complĂ©mentaires Nombre de nĆuds TrĂšs souvent, vous aurez besoin de connaĂźtre le nombre de nĆuds contenus Ă lâintĂ©rieur dâun autre. Câest la propriĂ©tĂ© length qui vous permettra de compter ces lignes. Dans notre dernier exemple, le nĆud <Jeunes> en contient 3. Voici la ligne dâinstruction qui permet de renvoyer cette valeur. nbrNoeuds = charge.childNodes[0].childNodes[0].childNodes.length; Vous constaterez que le dernier childNodes nâest pas spĂ©ciïŹĂ©, câest normal car vous souhaitez obtenir le nombre de tous les nĆuds et non un en particulier ! Il ne faut pas aller trop loin. Comme nous lâavions fait prĂ©cĂ©demment, essayons de traduire cette ligne dâinstruction. nbrNoeuds = charge.Bibliotheque[0].Jeunes.tousSesNoeuds.length; Nom dâun nĆud Dans certains cas, il sâavĂšre trĂšs pratique dâexploiter le nom dâun nĆud sâil est reprĂ©sentatif. Dans cet exemple, nous constaterons quâil est trĂšs aisĂ© de lire cette information. <Bibliotheque> <Jeunes> <Personne> <Nom>Dupond</Nom> <Profession>Enseignante</Profession> <Age>27</Age> </Personne> </Jeunes> </Bibliotheque> vNom = charge.childNodes[0].childNodes[0].childNodes[0].childNodes[0].nodeName; vProfession = charge.childNodes[0].childNodes[0].childNodes[0].childNodes[1].nodeName; vAge = charge.childNodes[0].childNodes[0].childNodes[0].childNodes[2].nodeName; Utilisez le mot nodeName comme vous lâavez fait avec attributes. La seule difïŹcultĂ© reste une fois encore dâindiquer le bon chemin, mais lĂ il nây a pas de piĂšge ! Premier exemple Imaginons ce scĂ©nario qui contiendra des imbrications : Vous vous rendez dans la bibliothĂšque de votre ville, car vous avez besoin d'un ouvrage. ArrivĂ© Ă lâaccueil qui se trouve au rez-de-chaussĂ©e, on vous indique que quatre Ă©tages sont Ă votre disposition. Les horaires vous sont communiquĂ©s ainsi que les jours dâouverture. Il sâagit dâun bĂątiment de cinq Ă©tages. Le premier est consacrĂ© aux livres pour les jeunes enfants. Le deuxiĂšme regroupe les publications scientiïŹques destinĂ©es aux Ă©tudiants et professionnels. 11
37.
150 scripts Livre
Page 12 Lundi, 20. ao t 2007 7:29 07 150 scripts pour Flash CS3 Le troisiĂšme Ă©tage propose des romans et une CDthĂšque (CD-Rom et CD audio). Le quatriĂšme est consacrĂ© Ă la presse (publications quotidiennes, hebdomadaires et mensuelles uniquement). EnïŹn, le dernier Ă©tage auquel vous nâavez pas accĂšs est rĂ©servĂ© Ă lâadministration. Essayons de reprĂ©senter votre bibliothĂšque sous forme de diagramme. Figure I-1 La structure dâun document XML sâappuie sur ce genre de diagramme. Lâeffort de comprĂ©hension que vous avez Ă faire pour lire ce diagramme est minime car nous vous avons expliquĂ© prĂ©alablement sa signiïŹcation. Nous nâallons pas tout de suite vous prĂ©senter le ïŹchier XML correspondant avec des articles dans les avant-derniers nĆuds, vous pourriez prendre peur. Commençons plutĂŽt par une reprĂ©sentation simpliïŹĂ©e. <Bibliotheque> <Jeunes> <Scolaires></Scolaires> <BD></BD> <Lecture></Lecture> </Jeunes> <Sciences> 12
38.
150 scripts Livre
Page 13 Lundi, 20. ao t 2007 7:29 07 Se prĂ©parer Ă la lecture de lâouvrage Introduction <Physique></Physique> <Chimie></Chimie> <Telecommunications></Telecommunications> </Sciences> <Loisirs> <CDTheque> <CDAudio></CDAudio> <CDRom></CDRom> </CDTheque> <Romans> <Policiers></Policiers> <Amour></Amour> </Romans> </Loisirs> <Presse> <Quotidienne></Quotidienne> <Hebdo></Hebdo> <Mensuelle></Mensuelle> </Presse> </Bibliotheque> PremiĂšre observation : deux balises peuvent se suivre sur la mĂȘme ligne ou lâune sous lâautre. Cela nâa aucune importance. Si vous avez une seule information Ă enfermer entre deux balises, autant le faire sur une seule ligne. Dans le cas des balises <Jeunes> et </Jeunes>, vous constatez quâil y a plusieurs informations Ă stocker, vous nâavez plus le choix, vous ĂȘtes obligĂ© de le faire sur plusieurs lignes. Pour faciliter davantage la lecture de ce document, nous allons dĂ©couper lâarbre XML en plusieurs parties. Cet exemple reprĂ©sente la bibliothĂšque et ses Ă©tages. <Bibliotheque> <Jeunes></Jeunes> <Sciences></Sciences> <Loisirs></Loisirs> <Presse></Presse> </Bibliotheque> Voici une autre structure qui aboutit au mĂȘme rĂ©sultat. <Bibliotheque> <Jeunes> </Jeunes> <Sciences> </Sciences> <Loisirs> </Loisirs> 13
39.
150 scripts Livre
Page 14 Lundi, 20. ao t 2007 7:29 07 150 scripts pour Flash CS3 <Presse> </Presse> </Bibliotheque> Penchons-nous Ă prĂ©sent sur le troisiĂšme nĆud. Il possĂšde deux nĆuds enfants. <Loisirs> <CDTheque> </CDTheque> <Romans> </Romans> </Loisirs> Ces deux nĆuds possĂšdent Ă leur tour des nĆuds enfants : <CDTheque> <CDAudio></CDAudio> <CDRom></CDRom> </CDTheque> et <Romans> <Policiers></Policiers> <Amour></Amour> </Romans> Nous allons nous arrĂȘter lĂ , vous lâaurez compris, lorsque vous ouvrez une balise, deux solutions sâoffrent Ă vous. âą Vous ajoutez deux autres balises (ouvrantes et fermantes) avant de la fermer. âą Vous la fermez aprĂšs avoir simplement saisi une valeur. AprĂšs cette dĂ©monstration, essayez de lire le document suivant en faisant abstraction dans un premier temps des donnĂ©es quâil contient (les livres et CD). <Bibliotheque horaires="8H00-12H00 et 13H00-17H30" joursOuverture="Du lundi au samedi"> <Jeunes> <Scolaires> <Livre numero = "00001" editeur = "Hachette">La France de 1900 Ă nos jours</Livre> <Livre numero = "00002" editeur = "Bayard">MathĂ©matiques en 6e</Livre> </Scolaires> <BD> <Livre numero = "00034" editeur = "Casterman">Toto en AmĂ©rique</Livre> <Livre numero = "00035" editeur = "Casterman">Toto au Tibet</Livre> </BD> <Lecture> <Livre numero = "00370" editeur = "Le PĂ©ron">Les aventures de Marine</Livre> <Livre numero = "00371" editeur = "Le pĂ©ron">Qui est arrivĂ© au Tibet ?</Livre> </Lecture> </Jeunes> <Sciences> 14
40.
150 scripts Livre
Page 15 Lundi, 20. ao t 2007 7:29 07 Se prĂ©parer Ă la lecture de lâouvrage Introduction <Physique> </Physique> <Chimie> </Chimie> <Telecommunications> </Telecommunications> </Sciences> <Loisirs> <CDTheque> <CDAudio> <CD numero = "100001" editeur = "Plusieurs grammes">Brel</CD> <CD numero = "100002" editeur = "Plusieurs grammes">Gainsbourg</CD> </CDAudio> <CDRom> <CD numero = "200001" editeur = "Montarnace">Le soleil jaune</CD> <CD numero = "200002" editeur = "Montarnace">Gribiste le chaton</CD> </CDRom> </CDTheque> <Romans> <Policiers> <Livre numero = "00642" editeur = "Dective">Qui a tuĂ© le grand ?</Livre> <Livre numero = "00643" editeur = "Dective">Sur les traces de Robert</Livre> </Policiers> <Amour> <Livre numero = "00798" editeur = "Lovatrice">Ils s'aiment dans le vent</Livre> <Livre numero = "00799" editeur = "Lovatrice">L'amour impossible</Livre> </Amour> </Romans> </Loisirs> <Presse> <Quotidienne> <Journal numero = "900001" date ="03/02/1970">Le matin</Journal> <Journal numero = "900002" date ="03/02/1970">Le soir</Journal> </Quotidienne> <Hebdo> <Magazine numero = "900008" date ="03/02/1970">Le nouveau regardeur</Magazine> <Magazine numero = "900009" date ="03/02/1970">La femme au drapeau</Magazine> </Hebdo> <Mensuelle> <Magazine numero = "900032" date ="02/1977">ProblĂšmes Constants Magazine</Magazine> <Magazine numero = "900033" date ="02/1977">Meilleurs Achats Consommateurs</Magazine> </Mensuelle> </Presse> </Bibliotheque> VoilĂ , nous venons de crĂ©er un document XML que vous seriez susceptible de devoir concevoir en mĂ©langeant valeurs et attributs. Se passer de lâun ou de lâautre aurait Ă©tĂ© dommage. 15
41.
150 scripts Livre
Page 16 Lundi, 20. ao t 2007 7:29 07 150 scripts pour Flash CS3 DeuxiĂšme exemple Prenons lâexemple dâun coursier qui doit tous les jours aller chercher une enveloppe dans une sociĂ©tĂ© X pour lâemmener dans une autre. Christophe, notre coursier, connaĂźt bien la sociĂ©tĂ© X, il nâa plus besoin de demander Ă lâaccueil quâon lui apporte le paquet quâil doit transporter, il va le chercher directement. La structure dâun document XML est comparable Ă nâimporte quelle construction immobiliĂšre qui reprĂ©sente un ensemble composĂ© de sous-parties. Lâenveloppe que doit aller chercher Christophe se trouve quelque part sur une Ă©tagĂšre dans les locaux de la sociĂ©tĂ© commanditaire. Lâimmeuble est composĂ© dâĂ©tages qui contiennent des services ou dĂ©partements qui, eux-mĂȘmes, contiennent des bureaux ou piĂšces qui contiennent Ă leur tour des armoires avec des Ă©tagĂšres. Sur une mĂȘme Ă©tagĂšre, il y a des parties. Ă gauche de lâĂ©tagĂšre, au centre et Ă droite, ce sont autant dâemplacements diffĂ©rents sur lesquelles on peu placer des documents. Christophe doit donc aller chercher une enveloppe qui se trouve au troisiĂšme Ă©tage, au service du courrier, bureau 320, dans la troisiĂšme armoire (en partant de la gauche), sur la premiĂšre Ă©tagĂšre en partant du haut. Comment pourrions-nous reprĂ©senter cette hiĂ©rarchie sâil sâagissait dâun document XML ? La sociĂ©tĂ© X a choisi de rĂ©partir un service par Ă©tage, nous pourrions donc dĂ©jĂ reprĂ©senter sa structure sous cette forme : <SocieteX> <Commercial></Commercial> <Technique></Technique> <Communication></Communication > <Administratif></Administratif > </SocieteX> Pour lâinstant, nous avons un document XML qui contient quatre nĆuds enfants Ă la racine. Le troisiĂšme nĆud (dont le numĂ©ro dâindex est 2, car le premier porte le numĂ©ro dâindex 0) est lâĂ©tage Communication. Ajoutons-lui des services. <SocieteX> <Commercial></Commercial> <Technique></Technique> <Communication> <CommInterne> </CommInterne> <CommExterne> </CommExterne> <Courrier> </Courrier> </Communication > <Administratif></Administratif > </SocieteX> Les services de communication interne et externes et de courrier ont Ă©tĂ© ajoutĂ©s. Si nous essayons maintenant dâimaginer Ă quoi pourrait ressembler un service ou un dĂ©partement dans une entreprise, nous avons deux solutions. Soit, ce sont des open spaces, soit 16
42.
150 scripts Livre
Page 17 Lundi, 20. ao t 2007 7:29 07 Se prĂ©parer Ă la lecture de lâouvrage Introduction des bureaux qui dĂ©limitent les emplacements des diffĂ©rents employĂ©s et donc des activitĂ©s. Au service du courrier, deux personnes ont Ă©tĂ© affectĂ©es. HervĂ© et David. Ils ont chacun leur bureau. Dans celui de David, il y a trois armoires. <SocieteX> <Commercial> </Commercial> <Technique> </Technique> <Communication> <CommInterne> </CommInterne> <CommExterne> </CommExterne> <Courrier> <Bureau numero = "319" occupant = "HervĂ© TIVERT" /> <Bureau numero = "320" occupant = "David LOUIS"> <Armoire></Armoire> <Armoire></Armoire> <Armoire> <Etagere> courrierExpeditionCoursier.pdf </Etagere> <Etagere></Etagere> <Etagere></Etagere> </Armoire> </Bureau> </Courrier> </Communication> <Administratif> </Administratif> </SocieteX> La troisiĂšme armoire possĂšde trois Ă©tagĂšres. Souvenez-vous, câest sur la premiĂšre que Christophe, notre coursier, doit prendre le pli. La reprĂ©sentation du document XML est faite, Ă prĂ©sent, comment pointer vers ce nĆud ? charge = new XML(); charge.load("SocieteX.xml"); charge.ignoreWhite = true; charge.onLoad = function() { pliAPrendre = charge.childNodes[0].childNodes[2].childNodes[2].childNodes[1] â„.childNodes[2].childNodes[0].childNodes[0]; }; Si vous nâavez pas lu le dĂ©but de ce chapitre, une premiĂšre question vous vient sĂ»rement Ă lâesprit : pourquoi y a-t-il autant de nĆuds et surtout Ă quoi correspondent-ils ? Pour rĂ©pondre Ă cette question, nous allons Ă nouveau essayer dâinterprĂ©ter chaque childNodes. Commençons par rappeler que charge.ChidlNodes[0] est obligatoire, câest pour indiquer le chemin des nĆuds Ă aller chercher. charge.childNodes[0].communication.courrier.bureau320.armoire3.etagere1 17
43.
150 scripts Livre
Page 18 Lundi, 20. ao t 2007 7:29 07 150 scripts pour Flash CS3 Attention La syntaxe de lâexemple ci-dessus nâest pas valable, il sâagit d'une explication sur la base dâune mĂ©taphore. Le tableau suivant va vous permettre de comprendre comment nous pourrions parcourir le document XML. Tableau 1 Correspondance des nĆuds et Ă©tages Ătages Code Commercial charge.childNodes[0].childNodes[0] Technique charge.childNodes[0].childNodes[1] Communication charge.childNodes[0].childNodes[2] Administration charge.childNodes[0].childNodes[3] Retenons Ă prĂ©sent que le nĆud qui nous intĂ©resse est celui de la communication, câest-Ă dire charge.childNodes[0].childNodes[2]. Voici un deuxiĂšme tableau qui vous propose les diffĂ©rents services disponibles Ă lâĂ©tage de la communication. Tableau 2 Correspondance des nĆuds et services Services Code Communication interne charge.childNodes[0].childNodes[2].childNodes[0] Communication externe charge.childNodes[0].childNodes[2].childNodes[1] Courrier charge.childNodes[0].childNodes[2].childNodes[2] La ligne dâinstruction qui nous intĂ©resse est celle du service courrier. Vous lâaurez compris, il sufïŹt de compter Ă chaque fois Ă partir de 0 et de compter le numĂ©ro de ligne, appelĂ© « index », qui correspond Ă lâinformation recherchĂ©e. Pourquoi y a-t-il un dernier childNodes[0] ? Une fois encore, pour rĂ©pondre Ă cette question, essayons de comprendre ce que nous renverrait la ligne suivante si elle ne contenait pas le dernier childNodes[0] : pliAPrendre = charge.childNodes[0].childNodes[2].childNodes[2].childNodes[1] â„.childNodes[2].childNodes[0] <Etagere>courrierExpeditionCoursier.pdf</Etagere> La ligne dâinstruction vous renvoie le nĆud que vous avez spĂ©ciïŹĂ©. Vous souhaitez obtenir le contenu de ce nĆud. Dans ce cas, vous disposez de trois solutions : âą vous ajoutez childNodes[0] ; 18
44.
150 scripts Livre
Page 19 Lundi, 20. ao t 2007 7:29 07 Se prĂ©parer Ă la lecture de lâouvrage Introduction âą vous ajoutez firstChild ; âą vous nâajoutez rien, mais vous cochez la case dâinterprĂ©tation des balises HTML du texte dynamique ou de saisie dans lequel le rĂ©sultat sera afïŹchĂ©. Figure I-2 Cochez cette case pour demander au player Flash dâinterprĂ©ter les balises contenues dans un texte dynamique ou de saisie. âą InterprĂ©tation du nom dâune occurrence Lorsque vous faites rĂ©fĂ©rence au nom dâune occurrence, vous prĂ©cisez le chemin et cela reprĂ©sente parfois une premiĂšre difïŹcultĂ© pour les nĂ©ophytes. Nous ne reviendrons pas sur cette notion, car ce nâest pas ici lâobjet de ce rappel. En revanche, nous allons dĂ©tailler la mĂ©thode Ă employer pour faire rĂ©fĂ©rence Ă une occurrence qui a gĂ©nĂ©ralement Ă©tĂ© crĂ©Ă©e dynamiquement. Commençons par cet exemple : _root.attachMovie("balle", "balle_inst", 1); balle_inst._x = 50; balle_inst._y = 50; La premiĂšre ligne dâinstruction a pour fonction de prendre dans la bibliothĂšque de lâanimation, un symbole disponible dont le nom de liaison est balle et de le placer sur la scĂšne. Lâoccurrence obtenue est alors appelĂ©e balle_inst. Rappelons que le chiffre dĂ©termine le niveau, câest-Ă -dire le plan de lâoccurrence par rapport aux occurrences qui se trouvent et se trouveront sur la scĂšne. Si aucune autre occurrence nâoccupe le niveau 1 (ou 0), celle-ci sera toujours en arriĂšre-plan des autres. Les deux lignes dâinstructions qui suivent la premiĂšre que nous venons dâanalyser, permettent de placer prĂ©cisĂ©ment lâoccurrence obtenue. Dans cet exemple, il nây a aucune difïŹcultĂ©, mais voyons Ă prĂ©sent le cas oĂč plusieurs occurrences auraient Ă ĂȘtres placĂ©es sur la scĂšne. Il nâest pas question de dupliquer ces trois lignes dâinstructions autant de fois quâil y a dâoccurrences Ă placer sur la scĂšne. Il faut donc employer une boucle. for (i=0; i<=10; i++) { _root.attachMovie("balle", "balle_inst"+i, i); _root["balle_inst"+i]._x = 15+i*35; _root["balle_inst"+i]._y = 50; } 19
45.
150 scripts Livre
Page 20 Lundi, 20. ao t 2007 7:29 07 150 scripts pour Flash CS3 Observez bien, la mĂ©thode attachMovie() est associĂ©e Ă _root. Cela signiïŹe donc que les occurrences qui vont ĂȘtres obtenues seront placĂ©es sur la scĂšne. Si nous avions une occurrence dĂ©jĂ prĂ©sente sur la scĂšne dont le nom serait tableauControle_inst, nous aurions pu saisir cette ligne dâinstruction : tableauControle_inst.attachMovie("balle", "balle_inst"+i, i); Vous lâaurez compris, neuf exemples sur dix disponibles dans les publications traitant de lâActionScript font gĂ©nĂ©ralement rĂ©fĂ©rence Ă _root, mais ce nâest pas la seule solution. Dans ce cas, voici Ă quoi devront ressembler les deux lignes qui suivent : tableauControle_inst ["balle_inst"+i]._x = 15+i*35; tableauControle_inst ["balle_inst"+i]._y = 50; Rappelons que les crochets symbolisent lâappartenance. Dans lâexemple suivant, janvier et fĂ©vrier sont bien des valeurs du tableau intitulĂ© mois. var mois = ["janvier","fĂ©vrier","mars","avril","mai","juin"] Si nous reprenons notre exemple ci-dessus, balle_inst est bien une occurrence de _root (ou de tableauControle_inst). Câest donc la seule solution pour faire rĂ©fĂ©rence par concatĂ©nation Ă tous les noms des occurrences numĂ©rotĂ©es. Avez-vous dĂ©jĂ nommĂ© une occurrence "balle_inst"+i dans la palette PropriĂ©tĂ©s ? Les guillemets et lâopĂ©rateur ne sont pas autorisĂ©s dans les noms dâoccurrences et de variables ! Si vous saisissiez donc la ligne dâinstruction suivante, la player Flash serait incapable de lâinterprĂ©ter. "balle_inst"+i._x = 15+i*35; Cette erreur est facile Ă comprendre Ă partir du moment oĂč vous retiendrez que devant une propriĂ©tĂ© ou une mĂ©thode, seuls les noms dâinstances (occurrences) ou de variables sont admis. Astuce Pour simpliïŹer votre script, nous aurions pu saisir les lignes d'instructions suivantes. for (i=0; i<=10; i++) { nelleOccur = _root.attachMovie("balle", "balle_inst"+i, i); nelleOccur._x = 15+i*35; nelleOccur._y = 50; } Pour ïŹnir, nous allons vous prĂ©senter une syntaxe dont lâavantage est quâelle permet dâĂ©conomiser plusieurs lignes de codes lorsque vous devez rĂ©gler les propriĂ©tĂ©s dâune occurrence placĂ©e sur la scĂšne avec les mĂ©thodes attachMovie() et duplicateMovieClip(). _root.attachMovie("carte", "carteFrance_inst", 1, {_alpha:60, _x:130, _y:60, _rotation:15}); et nomduneoccurrence.duplicateMovieClip("nomcopie", 2, {_alpha:60, _x:130, _y:250, â„_rotation:15}); 20
46.
150 scripts Livre
Page 21 Lundi, 20. ao t 2007 7:29 07 Se prĂ©parer Ă la lecture de lâouvrage Introduction âą Gestion des lignes dâinstructions contenues dans une boucle for() âą Pourquoi est-il nĂ©cessaire dâapporter un complĂ©ment dâinformations sur les boucles que vous connaissez sĂ»rement ? LâActionScript vous propose de dĂ©ïŹnir les scripts associĂ©s Ă une occurrence crĂ©Ă©e dynamiquement, mais cela peut poser un problĂšme. Prenons lâexemple suivant : for (i=0; i<=10; i++) { _root.attachMovie("photo", "photo"+i, i); _root["photo"+i]._x = 30+i*50; _root["photo"+i]._y = 50; _root["photo"+i].onPress = function() { nomDeLaPhoto = this._name; }; } Si vous lancez une animation contenant ce script, toutes les lignes dâinstructions ci-dessus ont Ă©tĂ© exĂ©cutĂ©es Ă lâexception de celle qui se trouve dans le gestionnaire onPress. Cette ligne ne va sâexĂ©cuter quâau moment oĂč lâutilisateur cliquera sur une photo. nomDeLaPhoto = this._name Dans le texte dynamique qui se trouve sur la scĂšne, celui dont le nom de variable est nomDeLaPhoto, le nom de lâoccurrence sur laquelle lâutilisateur va cliquer va sâinscrire. this._name est une information relative Ă lâoccurrence, celle qui contient cette ligne dâinstruction. Cette occurrence prĂ©cisĂ©ment. Rappelons que « celle » ou « cette » se traduisent notamment en anglais par « this ». Le mot-clĂ© this fait donc rĂ©fĂ©rence au nom de lâinstance qui se trouve devant le gestionnaire dans lequel il se trouve. _root["photo"+i].onPress = function() { nomDeLaPhoto = this._alpha-=5; }; Le script ci-dessus signiïŹe quâĂ chaque clic sur lâoccurrence Ă laquelle est rattachĂ©e ce script (pa exemple, photo3 si i vaut 3), cette mĂȘme occurrence va devenir de plus en plus transparente. Figure I-3 Le mot-clĂ© this fait bien rĂ©fĂ©rence au nom de l'occurrence qui se trouve devant le gestionnaire d'Ă©vĂ©nement. 21
47.
150 scripts Livre
Page 22 Lundi, 20. ao t 2007 7:29 07 150 scripts pour Flash CS3 Maintenant, essayons de comprendre pourquoi le script suivant renvoie toujours la mĂȘme valeur et notamment souvent une erreur. photosDeClasse = ["Marine", "Marjorie", "David", "Pat", "Sandy", "Manon"]; for (i=0; i<6; i++) { _root.attachMovie("photo", "photo"+i, i); _root["photo"+i]._x = 30+i*50; _root["photo"+i]._y = 50; _root["photo"+i].onPress = function() { nomDeLaPhoto = photosDeClasse[i]; }; } La premiĂšre question que nous vous poserons est : en combien de millisecondes sâexĂ©cute cette boucle ? La rĂ©ponse est simple, mais surtout logique : moins dâune fraction de seconde, car câest ce qui caractĂ©rise le principe des boucles for() et while(). Ajoutons et prĂ©cisons quâĂ la ïŹn de lâexĂ©cution de la boucle, i vaut 6. Vous nâallez pouvoir cliquer sur une occurrence quâĂ la ïŹn de la boucle qui sera de toutes les façons plus rapide que vous. Au moment oĂč vous cliquerez sur une occurrence, i vaudra donc dĂ©jĂ 6 ! La ligne dâinstruction suivante sâĂ©tait exĂ©cutĂ©e au moment de la boucle. _root["photo"+i].onPress = function() { Ă ce moment-lĂ , i valait une valeur trĂšs prĂ©cise. Imaginons quâil sâagissait de 3, dans ce cas, lorsque vous cliquez sur lâoccurrence intitulĂ©e photo3, la ligne dâinstruction contenue dans son gestionnaire sâexĂ©cute. Souvenez-vous quâau moment oĂč vous allez cliquer sur une des photos, i vaut 6. Alors que peut vous renvoyer la ligne dâinstruction suivante ? nomDeLaPhoto = photosDeClasse[6]; Une erreur ! En effet, lâentrĂ©e numĂ©ro 6 nâexiste pas. La premiĂšre entrĂ©e du tableau porte le numĂ©ro dâindex 0 et la derniĂšre le numĂ©ro 5. Attention, le problĂšme nâest pas celui de lâentrĂ©e qui nâexiste pas. Nous pourrions avoir dix entrĂ©es dans notre tableau, alors un clic sur toutes les photos renverrait tout de mĂȘme la valeur de la sixiĂšme entrĂ©e du tableau. Dans ce cas, comment faire pour obtenir la troisiĂšme entrĂ©e du tableau au moment du clic sur la photo intitulĂ©e photo3 ? Pour commencer, nâoubliez pas que la premiĂšre entrĂ©e dâun tableau porte lâindex 0. Donc nous nâallons pas cliquer sur lâoccurrence photo3 pour obtenir la troisiĂšme entrĂ©e du tableau, mais sur lâoccurrence photo2. Comme il existe une occurrence intitulĂ©e photo0, photo2 est bien la troisiĂšme occurrence. Ce problĂšme de dĂ©calage ne surviendra que dans les cas oĂč vous travaillerez avec des tableaux. Reprenons, il ne sâagissait que dâun dĂ©tail minime par rapport Ă notre problĂšme majeur. photosDeClasse = ["Marine", "Marjorie", "David", "Pat", "Sandy", "Manon"]; for (i=0; i<6; i++) { _root.attachMovie("photo", "photo"+i, i); 22
48.
150 scripts Livre
Page 23 Lundi, 20. ao t 2007 7:29 07 Se prĂ©parer Ă la lecture de lâouvrage Introduction _root["photo"+i]._x = 30+i*50; _root["photo"+i]._y = 50; _root["photo"+i].sonNumero = i; _root["photo"+i].onPress = function() { nomDeLaPhoto = photosDeClasse[this.sonNumero]; }; } Rappelons que dans le script ci-dessus, toutes les lignes dâinstructions sâexĂ©cutent au moment de la boucle Ă lâexception de la ligne qui est contenue dans le gestionnaire onPress. Si vous avez bien observĂ©, nous avons ajoutĂ© une nouvelle ligne : _root["photo"+i].sonNumero = i; Au moment de la boucle, nous avons associĂ© Ă chaque occurrence, une variable intitulĂ©e sonNumero qui a pris pour valeur celle de i, donc diffĂ©rente et propre Ă chaque occurrence. Lâoccurrence intitulĂ©e photo4 contient une variable intitulĂ©e sonNumero qui vaut 4. Ne peut-on donc pas dire que la variable qui vaut 2, câest celle de lâoccurrence qui sâappelle photo2 ? Si nous pouvions traduire celle par this et rĂ©ciproquement, voilĂ ce que nous obtiendrions dans notre script. photo4.onPress = function() { nomDeLaPhoto = photosDeClasse[this.sonNumero]; }; ou aussi photo4.onPress = function() { nomDeLaPhoto = photosDeClasse[cette occurrence sur laquelle je clique.sonNumero]; }; Vous lâaurez compris, dĂšs que vous dĂ©ïŹnissez un gestionnaire onPress dans une boucle for(), vous ne pouvez pas faire rĂ©fĂ©rence Ă la variable locale (i dans notre exemple), car elle renvoie toujours la mĂȘme valeur. Vous devez donc associer une variable Ă chaque occurrence. Astuce Une technique consiste Ă rĂ©cupĂ©rer le numĂ©ro ïŹgurant dans le nom pour lâutiliser comme valeur. Lâexemple suivant vous en fait la dĂ©monstration. photo4.onPress = function() { numero = this._name.substr(5, 1); trace(numero); }; 23
49.
150 scripts Livre
Page 24 Lundi, 20. ao t 2007 7:29 07 150 scripts pour Flash CS3 âą âą Le sens du mot-clĂ© this selon les contextes Si vous avez lu les trois explications prĂ©cĂ©dentes de ce chapitre, nous avons Ă©voquĂ© le sens de ce mot-clĂ©, vous en savez donc sĂ»rement un peu plus. Mais selon sa position dans un script, que signiïŹe ce mot-clĂ© ? Partons de lâexemple suivant : this._rotation = 180 ; âą Cette ligne dâinstruction se trouve sur la premiĂšre image-clĂ© de la timeline principale de votre animation. Lorsque vous tenterez de lire cette derniĂšre dans la page dâun navigateur ou dans un projecteur, toute la scĂšne sâafïŹchera Ă lâenvers, une rotation de 180Ë ayant Ă©tĂ© appliquĂ©e avant lâafïŹchage des Ă©lĂ©ments qui la composent. âą Ă prĂ©sent, imaginons quâelle se trouve sur la premiĂšre image-clĂ© de la timeline dâune animation (un ïŹchier SWF) que vous chargez par le biais de la commande loadMovieNum(). La scĂšne de votre animation principale ne va pas bouger ; en revanche, lâanimation chargĂ©e va sâafïŹcher Ă lâenvers (retournĂ©e de 180Ë). âą Pour ïŹnir, imaginons quâelle se trouve sur la premiĂšre image-clĂ© de la timeline dâun clip. Lorsque vous placerez ce clip sur la scĂšne, lâoccurrence issue de ce symbole sâafïŹchera sur la scĂšne retournĂ©e Ă 180Ë. Prenons dâautres exemples⊠personnage.onPress = function() { this._rotation += 5; }; this fait rĂ©fĂ©rence au nom de lâoccurrence qui se trouve devant le gestionnaire, câest-Ă dire personnage. decor.onEnterFrame = function() { this._x += 5; }; this fait rĂ©fĂ©rence au nom de lâoccurrence qui se trouve devant le gestionnaire, câest-Ă -dire decor. _root._alpha = 0; _root.onEnterFrame = function() { this._alpha += 3; if (this._alpha>=100) { delete this.onEnterFrame; } }; Rappelons que _root fait rĂ©fĂ©rence Ă la scĂšne. Ainsi, la premiĂšre ligne dâinstruction va plonger la scĂšne dans le noir (si la scĂšne est noire). Ce script a donc pour effet de rendre la scĂšne transparente, puis elle le devient de moins en moins. Lorsque son opacitĂ© dĂ©passe les 100 %, le gestionnaire est tout simplement dĂ©truit. 24
50.
150 scripts Livre
Page 25 Lundi, 20. ao t 2007 7:29 07 Partie I Lâinterface Câest le quotidien de la plupart des ïŹashers et dĂ©veloppeurs Flash. CrĂ©er un menu, le programmer pour quâil se dĂ©roule, dĂ©placer une occurrence par drag & drop (ou glisser-dĂ©poser, en français), rĂ©aliser un panier, construire dynamiquement un Ă©cran, ce sont autant de tĂąches que vous pourriez ĂȘtre conduits Ă mener pour un dĂ©veloppement. Ce chapitre met donc lâaccent sur les techniques suivantes : âą lâoptimisation dâune animation ; âą la crĂ©ation de menus et boutons ; âą la rĂ©alisation de variateurs ; âą la gestion dâun panier et des formulaires ; âą la gestion des effets de scrolls (menus et listes dĂ©roulants), des panoramiques et transitions ; âą la construction dynamique de lâinterface ; âą le contrĂŽle du temps et de son afïŹchage ; âą le dĂ©placement de personnages et dâobjets sur la scĂšne ; âą lâenregistrement de donnĂ©es dans des cookies et bases de donnĂ©es ; âą lâobtention dâinformations relatives Ă la scĂšne. Ces techniques sont toutes aussi importantes les unes que les autres, mais nous devons tout de mĂȘme mettre en avant le fait quâil est primordial dâĂȘtre capable de gĂ©rer du XML dans une animation Flash. Câest pourquoi nous avons trĂšs souvent utilisĂ© cette technologie dans nos Ă©tudes de cas. Par ailleurs, la construction dâune interface doit vraiment se faire dynamiquement. Il est une rĂšgle quâil faut essayer de pousser au maximum de vos limites, placez et crĂ©ez tout dynamiquement sur la scĂšne, Ă©vitez de dĂ©poser vous-mĂȘme un symbole sur la zone de travail (il serait dâailleurs impossible de le supprimer). Avant de vous lancer dans la lecture de ce livre, assurez-vous que vous comprenez bien les points abordĂ©s dans le chapitre prĂ©cĂ©dent.
51.
150 scripts Livre
Page 26 Lundi, 20. ao t 2007 7:29 07
52.
150 scripts Livre
Page 27 Lundi, 20. ao t 2007 7:29 07 1 Optimisation dâune animation Il est trĂšs facile de rĂ©aliser une animation, avec ou sans interpolation, contenant Ă©ventuellement du code, car des centaines de sites sur Internet vous proposent des tutoriaux pour vous aider Ă faire vos premiers pas en Flash puis en ActionScript. Allez-vous respecter toutes les rĂšgles Ă©lĂ©mentaires qui ïŹgurent gĂ©nĂ©ralement dans les notes et autres remarques de lâaide ofïŹcielle de Macromedia Flash ? Sans avoir la prĂ©tention dâĂȘtre exhaustif, nous allons mettre en avant certaines techniques qui vous permettront dâobtenir des animations/scripts optimisĂ©s, câest-Ă -dire rapides Ă lâexĂ©cution, pas trop lourds, faciles Ă mettre Ă jour, et respectant certaines conventions propres Ă la programmation. Techniques dâoptimisation dâune production en Flash Nous nâallons pas commencer par vous prĂ©senter une animation « optimisĂ©e », ni nous arrĂȘter sur des conseils relatifs Ă la programmation en ActionScript, mais plutĂŽt vous Ă©numĂ©rer des rĂšgles quâil est fortement conseillĂ© de suivre si vous voulez optimiser votre productivitĂ©, votre code et lâexĂ©cution de vos animations. Prise en main du logiciel âą DĂšs le dĂ©but de la crĂ©ation dâune animation, rĂ©glez sa cadence, câest-Ă -dire la vitesse de dĂ©ïŹlement de la tĂȘte de lecture. Dans le menu ModiïŹcation>DocumentâŠ, rĂ©glez le chiffre ïŹgurant Ă droite de lâĂ©tiquette Cadence Ă 20 au minimum.
53.
150 scripts Livre
Page 28 Lundi, 20. ao t 2007 7:29 07 Lâinterface Partie I Nous vous conseillons de pousser cette valeur Ă 30. RĂ©glez Ă©galement la largeur, la hauteur et la couleur de la scĂšne. Cette derniĂšre pourra toujours ĂȘtre changĂ©e, mais il est dĂ©conseillĂ© de changer les dimensions dâune animation en cours de dĂ©veloppement. âą Puisque vous ĂȘtes dans cette fenĂȘtre PropriĂ©tĂ©s du document, proïŹtez-en pour rĂ©gler la cadence, la largeur, la hauteur et la couleur de la scĂšne de vos prochaines animations de façon dĂ©ïŹnitive. Cliquez simplement sur le bouton « Ătablir comme valeur par dĂ©faut ». âą Enregistrez votre animation avant mĂȘme de travailler dessus car dans certains cas, elle devra possĂ©der une identitĂ©, câest-Ă -dire ĂȘtre physiquement prĂ©sente sur le disque dur de votre ordinateur sous forme de ïŹchier. âą DĂšs le premier lancement de Flash, conïŹgurez la disposition des palettes sur votre Ă©cran aïŹn de ne pas avoir Ă les bouger continuellement, ce qui ralentirait votre productivitĂ©. Enregistrez alors cette disposition via le menu FenĂȘtre>Enregistrer la disposition des panneaux⊠⹠Ayez le rĂ©ïŹexe dâutiliser les raccourcis prĂ©sentĂ©s ci-dessous. Il en existe de nombreux autres, câest un minimum Ă sâimposer pour optimiser sa productivitĂ©. Tableau 1-1 Raccourcis clavier Ă connaĂźtre Raccourci RĂ©sultat F6 F7 CrĂ©er une image-clĂ© vide. F5 Ajouter des images. Si la tĂȘte de lecture se trouve avant la derniĂšre image dâun calque, le raccourci insĂšre des images aprĂšs lâimage sĂ©lectionnĂ©e. Dans le cas contraire, des images sont ajoutĂ©es entre la ïŹn du calque et lâimage sĂ©lectionnĂ©e. F8 Transformer une sĂ©lection en un Symbole. F9 AfïŹcher/Masquer la palette Action. La lettre V seule SĂ©lectionner lâoutil FlĂšche noire (Outil SĂ©lection). Les lettres R et O SĂ©lectionner respectivement les outils Rectangle et Ovale. Ctrl + B Commande-B (Mac) Pour « casser » une occurrence et rĂ©cupĂ©rer son contenu. Dans le cas dâun texte, vous obtenez des lettres sĂ©parĂ©es. Une nouvelle exĂ©cution du raccourci transforme chaque lettre en forme vectorielle. Ctrl + EntrĂ©e Commande-EntrĂ©e (Mac) Permet de lire lâanimation en plein Ă©cran (tout du moins sans les palettes). Ctrl + Shift + EntrĂ©e Commande + Shift + EntrĂ©e (Mac) Lancer lâanimation en mode dĂ©bogage. Ctrl + K et Ctrl + I Commande + K et Commande + I (Mac) 28 CrĂ©er une image-clĂ© reprenant le contenu de la prĂ©cĂ©dente sur le mĂȘme calque. AfïŹcher respectivement les palettes Aligner et Info.
Download now