« Animate CC 2015 HTML5 Canvas - Symboles et clips » : différence entre les versions

De EduTech Wiki
Aller à la navigation Aller à la recherche
 
(43 versions intermédiaires par 8 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{incomplet}}
{{Incomplet}}
{{En construction}}
Attention, pour le moment il y de l'info pour CS4-6 .... !! - [[Utilisateur:Daniel K. Schneider|Daniel K. Schneider]] ([[Discussion utilisateur:Daniel K. Schneider|discussion]]) 6 mai 2015 à 17:41 (CEST)
 
{{Tutoriels Flash|CC 2014/HTML5|débutant}}
{{Tutoriels Flash|CC 2014/HTML5|débutant}}
<pageby nominor="false" comments="false"/>
<!-- <pageby nominor="false" comments="false"/> -->


== Introduction ==
== Introduction ==
Ligne 11 : Ligne 8 :
'''Objectifs d'apprentissage'''  
'''Objectifs d'apprentissage'''  


* Connaître les trois types de symboles en Flash CS3/CS4/CS5/CC
* Connaitre les trois types de symboles en Flash CS3/CS4/CS5/CC
* Etre capable de créer des clips (Angl. ''movie clip'')
* Créer des clips (Angl. ''movie clip'')
* Savoir arrêter/démarrer de clips imbriqués avec '''JavaScript'''
* Arrêter/démarrer des clips imbriqués avec '''JavaScript''' (et non pas ActionScript !)
* Concevoir un fichier Flash comme un assemblage de petits clips imbriqués, c.a.d. des animations dans des animations.  
* Concevoir un fichier Flash comme un assemblage de petits clips imbriqués, c.a.d. des animations dans des animations.  


Ligne 31 : Ligne 28 :
'''Qualité et niveau'''
'''Qualité et niveau'''


Ce tutoriel aidera les adeptes de la technique à démarrer. Le niveau de ce tutoriel est un peu haut pour les novices, mais peut servir comme des fiches pratiques dans un atelier.  
Ce tutoriel aidera les adeptes de la technique à démarrer. Le niveau de ce tutoriel est un peu haut pour les novices, mais peut servir comme fiches pratiques dans un atelier.  


'''Prochaines étapes'''  
'''Prochaines étapes'''  
Ligne 44 : Ligne 41 :
== Les symboles Flash ==
== Les symboles Flash ==


Le mot ''symbol'' (angl.) ou ''symbole'' vient de l'ancienne terminologie Flash et ne fait plus beaucoup de sens. Un symbol est un objet Flash "lourd" qui contient des définitions pour des animations, boutons et animations. En informatique, un symbole correspond à une '''classe''', c-a-d. un objet générique.
Le mot ''symbol'' (angl.) ou ''symbole'' vient de l'ancienne terminologie Flash et ne fait plus beaucoup de sens. Un symbol est un objet Flash "lourde" qui contient des définitions pour des animations, boutons et animations. En informatique, un symbole correspond à une '''classe''', c-a-d. il s'agit d'un objet générique.


Il existe trois types de symboles: (1) une définition pour un graphique, (2) un bouton ou un (3) "clip" (possibilité d'animation). Un clip est réutilisable dans le même document ou dans un autre. Chaque symbole que vous créez ou utilisez est inséré dans la bibliothèque (''library'').
Il existe trois types de symboles: une définition  pour (1) un graphique, (2) un bouton ou un (3) "clip" (possibilité d'animation). Un symbol est réutilisable dans le même document ou dans un autre. Chaque symbole que vous créez ou utilisez est inséré dans la bibliothèque (''library'').


Le symbole n'est jamais utilisé directement dans un clip, il faut créer une '''instance''', appelé aussi '''occurrence'''. Seulement les instances vont être utilisées sur la scène. Un symbole peut avoir plusieurs instances, mais une instance n'est reliée qu'à un seul symbole. Vous pouvez partager les symboles entre les documents en tant que ressources de bibliothèque partagées pendant la programmation voir l'exécution.
Le symbole n'est jamais utilisé directement dans un clip, il faut créer une '''instance''', appelé aussi '''occurrence'''. Seulement les instances vont être utilisées sur la scène. Un symbole peut avoir plusieurs instances, mais une instance n'est reliée qu'à un seul symbole. Vous pouvez partager les symboles entre les documents en tant que ressources de bibliothèque partagées pendant la programmation et/ou l'exécution.


Chaque symbole de type ''clip'' (français) ou ''movie clip'' (Anglais) possède son propre scénario (timeline), scène et calques. Vous pouvez y ajouter des images, des images-clés et des calques ou encore d'autres symboles, exactement comme dans le scénario principal. Autrement dit, pour faire une animation, vous pouvez ...
Chaque symbole de type ''clip'' (français) ou ''movie clip'' (Anglais) possède son propre scénario (timeline), scène et calques. Vous pouvez y ajouter des images, des images-clés et des calques ou encore d'autres symboles, exactement comme dans le scénario principal. Autrement dit, pour faire une animation, vous pouvez ...
* Juste utiliser la timeline (scenario) principale: Dans ce cas, vous n'utilisez qu'un seul clip avec animation, c-a-d le fichier Flash lui-même. Cette façon de procéder est cher aux designers Flash traditionnels.
* Juste utiliser la timeline (scenario) principale: Dans ce cas, vous n'utilisez qu'un seul clip avec animation, c-a-d le fichier Flash lui-même. Cette façon de procéder est cher aux designers Flash traditionnels et on ne la recommande pas dans un contexte de multimédia interactif.
* Créer une animation à l’'''intérieur''' d'un symbole de type clip (c.f. aussi ci-dessous): Vous pourrez ensuite créer des instances de ce clip, autrement dit, poser des objets animés dans une scène. Bien entendu, ce clip peut lui aussi contenir des clips. L'avantage de cette méthode est de pouvoir facilement réutiliser des composants. Le désavantage est qu'il faut apprendre un peu de JavaScript pour lancer et arrêter des animations.
* Créer une animation à l’'''intérieur''' d'un symbole de type clip (c.f. aussi ci-dessous): Vous pourrez ensuite créer des instances de ce clip, autrement dit, poser des objets animés dans une scène. Bien entendu, ce clip peut lui aussi contenir des clips. L'avantage de cette méthode est de pouvoir facilement réutiliser des composants. Son désavantage est qu'il faut apprendre un peu de JavaScript pour lancer et arrêter des animations.


=== Les trois types de symboles Flash ===
=== Les trois types de symboles Flash ===
Ligne 63 : Ligne 60 :


Flash Pro inclut des symboles prédéfinis:
Flash Pro inclut des symboles prédéfinis:
* Les [[Flash CS4 - Boutons|bouton]] que vous retrouvez dans la ''library - button.fla'' de Flash Profession CS3/4/5/6. Ils n'existent plus dans Flash CC, mais on peut les réimporter.
* Les [[Flash CS4 - Boutons|boutons]] que vous retrouvez dans la ''library - button.fla'' de Flash Profession CS3/4/5/6. Ils n'existent plus dans Flash CC, mais on peut les réimporter.
* Les composants intégrés sont des clips programmés en ActionScript (voir: [[Flash CS4 - Composants]]), et ils ne marchent donc pas pour HTML5.
* Les composants intégrés sont des clips programmés en ActionScript (voir: [[Flash CS4 - Composants]]), et ils ne marchent donc pas pour HTML5.


Ligne 87 : Ligne 84 :
#* Menu ''Modify > Convert to symbol'' (ou utilisez le raccourci clavier F8)
#* Menu ''Modify > Convert to symbol'' (ou utilisez le raccourci clavier F8)
#* Faites glisser la sélection dans le panneau ''library'' (bibliothèque)
#* Faites glisser la sélection dans le panneau ''library'' (bibliothèque)
# Dans la boîte de dialogue ''Convert to symbol'', entrez le nom du symbole, puis sélectionnez son comportement, c'est à dire choisir entre graphic symbol, button symbol et movie clip symbol. Vous pouvez transformer un symbole plus tard, enfin si vous transformez un clip ou un bouton vous allez perdre son contenu interactif.
# Dans la boite de dialogue ''Convert to symbol'', entrez le nom du symbole, puis sélectionnez son comportement, c'est à dire choisir entre ''graphic symbol'', ''button symbol'' et ''movie clip symbol''. Vous pouvez transformer un symbole plus tard, enfin si vous transformez un clip ou un bouton vous allez perdre son contenu interactif.
# Cliquez dans la grille d'alignement afin de positionner le point d'alignement/alignement du symbole et que définit l'origine du système des coordonnés de l'objet. Par défaut (selon les conventions infographiques) il se trouve en haut à gauche. Nous préférons le centre pour les movie clip, et en haut à gauche pour les boutons et les graphiques.
# Cliquez dans la grille d'alignement afin de positionner le point d'alignement/alignement du symbole et que définit l'origine du système des coordonnés de l'objet. Par défaut (selon les conventions infographiques) il se trouve en haut à gauche. Nous préférons le centre pour les movie clip, et en haut à gauche pour les boutons et les graphiques.
# Cliquez sur OK.
# Cliquez sur OK.
Ligne 95 : Ligne 92 :
=== Edition de symboles ===
=== Edition de symboles ===


Je suggère d'ajouter la barre d'édition: ''Window-> Tool bars -> Edit bar''. Elle va vous montrer exactement à quel niveau vous éditez, par exemple au niveau de la timeline principale ou dans un symbol.  
Si ce n'est pas déjà fait, je suggère d'ajouter la barre d'édition: ''Window-> Tool bars -> Edit bar''. Elle va vous montrer exactement à quel niveau vous éditez, par exemple au niveau de la timeline principale ou dans un symbol.  


Dans l'image ci-dessous, vous pouvez voir une cascade de niveaux d'édition. Actuellement, nous sommes en train d'éditer le graphisme d'un clip appelé "Parrot_nose" !
Dans l'image ci-dessous, vous pouvez voir une cascade de niveaux d'édition. Actuellement, nous sommes en train d'éditer le graphisme d'un clip appelé "Parrot_nose" !
Ligne 127 : Ligne 124 :
Examinons maintenant une façon de créer des clips d'animation Flash dans les fichiers flash.
Examinons maintenant une façon de créer des clips d'animation Flash dans les fichiers flash.


Pour créer un nouveau clip dans un fichier d'animation Flash procédez comme suit:
Pour créer un nouveau clip dans un fichier d'animation Flash, nous rappelons qu'on peut procéder comme suit:
* Menu ''Insert-> New symbol''
* Menu ''Insert-> New symbol''
* Selectionner ''Movie Clip'' et de donner un bon nom. On suggère de donner un nom comme "Clip XXX" à un objet qui contiendra une animation.
* Selectionner ''Movie Clip'' et de donner un bon nom. On suggère de donner un nom comme "Clip XXX" à un objet qui contiendra une animation.
Ligne 133 : Ligne 130 :
Sinon, vous pouvez aussi transformer un graphique existant en clip
Sinon, vous pouvez aussi transformer un graphique existant en clip
* Dessiner un objet sur la scène
* Dessiner un objet sur la scène
* ''Clic-droit-> Convert to symbol''. Sélectionnez Movie Clip''''
* ''Clic-droit-> Convert to symbol''. Sélectionnez Movie Clip'


=== Point d'alignement et point de transformation ===
=== Point d'alignement et point de transformation ===
Ligne 157 : Ligne 154 :
Rappelons qu'il existe deux manières de modifier un clip:
Rappelons qu'il existe deux manières de modifier un clip:


(1) En vue "stand-alone" vous pourrez voir uniquement les composantes du clip. Double-cliquez sur l'<nowiki>'''icône clip'''</nowiki> (pas son nom) '''dans la bibliothèque'''. Vous pouvez maintenant travailler avec sa chronologie (timeline) interne, donc créer une animation interne à l'objet.
(1) En vue "stand-alone" vous pourrez voir uniquement les composantes du clip. Double-cliquez sur l'<nowiki>''icône clip''</nowiki> (pas son nom) '''dans la bibliothèque'''. Vous pouvez maintenant travailler avec sa chronologie (timeline) interne, donc créer une animation interne à l'objet.


(2) Modifier un objet avec la scène en arrière-plan. Si vous placez une instance du clip sur la scène et puis double-cliquez sur cette instance, vous pouvez modifier le clip tout en voyant les objets de la scène alors que vous éditez juste le clip. Ci-dessous est une copie d'écran d'une situation où nous éditons un symbole de clip dans un contexte. La scène elle-même est "grisée" (image et boutons).
(2) Modifier un objet avec la scène en arrière-plan. Si vous placez une instance du clip sur la scène et puis double-cliquez sur cette instance, vous pouvez modifier le clip tout en voyant les objets de la scène alors que vous éditez juste le clip. Ci-dessous est une copie d'écran d'une situation où nous éditons un symbole de clip dans un contexte. La scène elle-même est "grisée" (image et boutons).


Dans un clip vous pouvez faire ce que vous appris dans les tutoriels précédents, p.ex. dans le [[Flash CS4 - Interpolation de mouvement]]. En d'autres termes, les clips ont leur propre scénario comme vous pouvez le voir sur l'image ci-dessus. L'exemple ci-dessous implémente une animation de type ''' motion tween''' pour un pingouin, c'est à dire on fait bouger son bras droit.'''<nowiki/>''' Dans la copie d'écrant ci-dessous en est en train d'éditer le "Pink pinguin clip". Vous pouvez voir deux interpolations de mouvement. Le bras droit en train d'être édité a son '''center point''' en haut à droit pour pouvoir le tourner.
Dans un clip vous pouvez faire ce que vous appris dans les tutoriels précédents, p.ex. dans le [[Flash CS4 - Interpolation de mouvement]]. En d'autres termes, les clips ont leur propre scénario comme vous pouvez le voir sur l'image ci-dessus. L'exemple ci-dessous implémente une animation de type ''' motion tween''' pour un pingouin, c'est à dire on fait bouger son bras droit.'''<nowiki/>''' Dans la copie d'écran ci-dessous en est en train d'éditer le "Pink pinguin clip". Vous pouvez voir deux interpolations de mouvement. Le bras droit en train d'être édité a son '''center point''' en haut à droit pour pouvoir le tourner.


N'oubliez pas de revenir à la scène une fois que vous avez fini, par exemple en double-cliquant sur la "scène". Assurez-vous que vous savez à quel niveau vous modifiez et où placer les objets!
N'oubliez pas de revenir à la scène une fois que vous avez fini, par exemple en double-cliquant sur la "scène". Assurez-vous que vous savez à quel niveau vous modifiez et où placer les objets!
Ligne 174 : Ligne 171 :
=== Insérer une animation existante dans un nouveau document ===
=== Insérer une animation existante dans un nouveau document ===


Il existe des situation où on désire juste copier un ou plusieurs calques (layers) et qui contiennent des animations. C'est facile à condition d'utiliser le menu contextuel (clic droit).
Il existe des situations où on désire juste copier un ou plusieurs calques (layers) et qui contiennent des animations. C'est facile à condition d'utiliser le menu contextuel (clic droit).


Créez un nouveau symbole de type "movie clip" (Menu ''Insert->New Symbol'' ou CTRL-F8).
Créez un nouveau symbole de type "movie clip" (Menu ''Insert->New Symbol'' ou CTRL-F8).


Allez sur votre animation déjà réalisée et sélectionnez tous les ''layers'' dans la timeline. Pressez la touche "CTRL" avant de sélectionner avec la souris. Il est également possible de copier que certains frames. Ensuite clic-droit sur cette sélection et ''copy frames'' et coller tout dans votre nouvelle animation en utilisant de nouveau le menu contextuel (clic droit) ''paste frames''. Puis glisser ce nouveau clip dans le layer/frame approprié du nouveau fichier Flash.
Allez sur votre animation déjà réalisée et sélectionnez tous les ''layers'' dans la timeline. Pressez la touche "CTRL" avant de sélectionner avec la souris. Il est également possible de ne copier que certains frames. Ensuite clic-droit sur cette sélection et ''copy frames'' et coller tout dans votre nouvelle animation en utilisant de nouveau le menu contextuel (clic droit) ''paste frames''. Puis glisser ce nouveau clip dans le layer/frame approprié du nouveau fichier Flash.


== Pilotage de clips avec ActionScript ==
== Pilotage de clips avec JavaScript ==


=== Pilotage d'un clip - instructions de base ===
=== Pilotage d'un clip - survol ===


Créez un clip ou faites glisser un clip à partir de la bibliothèque sur la scène et donnez-lui tout-de-suite '''un nom d'instance'''. Rappelez-vous que les noms d'instance doivent être simple, par exemple books et ''pas'' quelque chose comme'' animation géniale de livres''. Un nom d'instance doit commencer par une lettre, suivi par d'autres lettres, chiffres ou le signe "_" seulement.
Créez un clip ou faites glisser un clip à partir de la bibliothèque sur la scène et donnez-lui tout-de-suite '''un nom d'instance'''. Rappelez-vous que les noms d'instance doivent être simple, par exemple books et ''pas'' quelque chose comme'' animation géniale de livres''. Un nom d'instance doit commencer par une lettre, suivi par d'autres lettres, chiffres ou le signe "_" seulement.


Supposons que le nom de l'instance d'un clip soit '''books'''. Vous pouvez maintenant utiliser du code JavaScript pour manipuler ce clip. Par exemple:
Ensuite, il faut créer un bouton. N'importe quel symbole peut faire office de "button", y compris l'objet animé lui-même (lisez le tutoriel [[Animate CC 2015 HTML5 Canvas - Boutons]]. Le bouton sera utilisé pour déclencher une fonctions une fois que l'utilisateur clic dessus:
 
this.monBouton.addEventListener("click", startAnimation.bind(this));
 
Ensuite il faut définir la fonction <code>startAnimation</code>. Supposons que le nom de l'instance d'un clip soit '''books'''. Vous pouvez maintenant utiliser du code JavaScript pour manipuler ce clip depuis cette fonction. Par exemple:


; Jouer un clip
; Jouer un clip
Ligne 208 : Ligne 209 :
   this.stop ();
   this.stop ();


=== Gérer chronologiquement plusieurs clips dans le cadre d'un jeu ===
Pour plus de détails, veuillez consulter les exemple (y compris leur code source) ci-dessous.
 
=== Lancer un clip après x temps ===
 
Lorsque vous avez des animations qui commencent à devenir complexes comme des cinématiques il peut devenir difficile de la faire exécuter sur un seul clip. Il est alors parfois plus simple de construire des bouts d'animation séparément et de les intégrer par la suite.
Imaginons que nous voulons faire l'animation d'une fontaine à levier. Nous voulons que de l'eau sorte un moment après avoir commencé à actionner le levier. En résumé la cinématique se passe en boucle en deux étapes:
 
# la pompe est actionnée (l'eau ne sort pas).
# la pompe est toujours actionnée et l'eau sort.
 
Si on faisait ça dans un seul clip alors ces deux étapes seraient répétés en boucle et donc dans l'animation il y aurait des moments où l'eau s'arrête de sortir.
[[Fichier:Garretv0_1._fontaine_1_clip.png | center]]
 
Or nous voulons qu'une fois que l'eau a commencé à sortir cela ne s'arrête plus d'où l'utilité d'avoir fait deux animations (une pour la fontaine et une autre pour l'eau).
[[Fichier:Garretv0_2._fontaine_2_clip.png |center]]
 
Il va donc falloir faire tourner les deux animations en boucle mais que l'animation de l'eau commence à tourner quelques secondes plus tard après que l'animation de la fontaine ait commencé.
 
'''Procédure:'''
* Créer l'animation (clip) de la fontaine
* Créer l'animation de l'eau
* Insérer les deux animations dans la scène principale et leur donner un nom (fontaine et eau).
 
Une fois ces trois étapes exécutés nous allons devoir ajouter du code afin de lancer l'animation de l'eau après x secondes. Il faudra donc écrire du code (f9 ou fn+f9).
Voici la fonction qu'il faudra insérer au début de votre code:
 
<source lang="actionscript">
fairePause = function(symbole, visible, secs) {
symbole.stop();
if(visible == false){
symbole.visible=false;
}
var intID = setInterval(lancer, secs * 1000, symbole);
function lancer(symbole) {
clearInterval(intID);
if(visible == false){
symbole.visible=true;
}
symbole.play();
}
};
</source>
 
Cette fonction permet de lancer une animation après x secondes et de dire si l'animation doit rester invisible ou pas tant qu'elle n'a pas été lancée. Ensuite il suffira juste de lancer l'animation de la fontaine et celle de l'eau en utilisant la fonction fairePause. Il faudra plus que copier à la suite le code suivant à la suite:
 
<source lang="actionscript">
this.fontaine.play();
fairePause(this.eau, false, 3);
</source>
 
Ici l'animation de l'eau sera lancée après 3 secondes et ne s'affichera pas avant les 3 secondes. Si on veut qu'elle s'affiche dès le chargement de la page il faudra mettre "true" à la place de "false".
 
 
=== Répéter un clip x fois ===
 
Par défaut, lorsque l'on créé une animation celle-ci se répète en boucle. Il serait parfois utile de définir combien de fois nous voulons répéter une animation.
 
'''Procédure:'''
* Créer votre animation (appelée rectangle dans l'exemple)
* Insérer votre animation dans la scène principale
 
<u>Cas 1:</u> Vous voulez que votre animation se répète en boucle
Tout est bon, vous n'avez plus rien à faire.
 
<u>Cas 2:</u> Vous voulez que votre animation se répète une seule fois
* Ouvrir votre animation
* Créer un nouveau calque (appelé Actions dans l'exemple)
* Insérer le code suivant dans le nouveau calque (f9 ou fn+f9):


Précédemment nous avons vu comment créer un clip et lui donner un nom d'instance. A présent, nous allons voir comment gérer les différents clips créés. Imaginons que nous avons créez trois clips différents auxquels l'on a donné à chacun un ''nom de label'' défini:
<source lang="actionscript">
# clip n°1 -> "intro"
this.stop();
# clip n°2 -> "jeu"
</source>
# clip n°3 -> "fin"
Maintenant, l'idée est de les faire apparaître chronologiquement dans notre animation.


'''Étape 1'''
* Placer ce code à la fin de l'animation:
[[Fichier:Garretv0_3._code_animation.png | center]]


Dans la main timeline, organisez vos trois ''états/clips'' dans la suite logique où vous souhaitez les voir apparaître dans le calque qui contiendra vos animations. Créez ensuite un autre calque dans lequel vous ajouterez le code ActionScript suivant:
Quand l'animation arrivera au frame 15 alors le this.stop(); s'exécutera et donc l'animation ne sera plus répétée. Au final l'animation sera répétée qu'une seule fois.


// ----- stop maintimeline
<u>Cas 3:</u> Vous voulez que votre animation se répète x fois
this.stop();
* Sur votre scène principale, créer un nouveau calque (appelé Actions dans l'exemple)
* Insérer le code suivant dans le nouveau calque (f9 ou fn+f9):


'''Étape 2'''
<source lang="actionscript">
compteurAnimationRectangle = 0;
//Sert à dire combien de fois on va répéter l'animation
NbFoisAnimationRectangle = 3;
this.rectangle.play();
</source>


Dans les timelines de chaque clip. Vous créerez à nouveau des calques dans lesquels vous noterez dans la dernière frame du layer "script ou action", les codes ci-dessous :
Il faudra créer une variable compteur et NbFois pour chaque animation que vous voudrez répéter un nombre particulier de fois. La variable compteur doit être insérée au début de votre code et devra toujours valoir 0. La variable NbFois vaudra le nombre de fois que l'on veut répéter l'animation (3 dans l'exemple). Cette variable sera placée avant l'instruction this.play(); de l'animation en question (rectangle dans l'exemple).
* Pour passer du clip "intro" au clip "jeu" -> MovieClip(root).gotoAndStop("jeu");
* Pour passer du clip "jeu" au clip "fin" -> MovieClip(root).gotoAndStop("fin");
* Pour revenir au début depuis le clip "fin" -> MovieClip(root).gotoAndStop("intro");


Attention, il y a d'autres possibilité de passer d'un clip à un autre, par exemple
* Ouvrir votre animation
* Vous pouvez l'utilisateur laissez faire par le biais d'un bouton. Pour cela, référez-vous au paragraphe ''Sites Flash à base de menus'' du tutoriel [[Flash CS4 - Boutons]].
* Créer un nouveau calque (appelé Actions dans l'exemple)
* En copiant les tweens définissant les animations dans un même layer (un tween après l'autre)
* Insérer le code suivant dans le nouveau calque (f9 ou fn+f9):
 
<source lang="actionscript">
if(compteurAnimationRectangle >= 0){
compteurAnimationRectangle++;
}
 
 
if(compteurAnimationRectangle == NbFoisAnimationRectangle){
this.stop();
//this.visible=false;
compteurAnimationRectangle = 0;
}
</source>
 
* Placer ce code à la fin de l'animation:
[[Fichier:Garretv0_3._code_animation.png | center]]
 
A chaque fois l'animation arrivera au frame 15 alors le compteur compteurAnimationRectangle sera incrémenté. Lorsque celui-ci vaudra la valeur que nous avons indiqué que nous voulons que l'animation soit répétée grâce à notre variable NbFoisAnimationRectangle alors this.stop(); sera exécuté et donc l'animation ne sera plus répétée. Au final l'animation sera répétée NbFoisAnimationRectangle fois. Si vous voulez qula fin des NbFoisAnimationRectangle répétitions votre animation disparaisse vous pouvez enlever les "//" devant "this.visible=false;".
 
===Faire un effet de mouseover===
 
L'exemple de code ci-dessous montre comment faire un effet de mouseover.
Lorsque le curseur de la souris passe sur une forme, dans notre cas il s'agit d'une forme jaune (jaune1 dans le code), un textbox s'affiche contenant du texte faisant référence à cette forme. Il faut tout d'abord dire à la scène d'activer le mode mouse over, puis ouvrir un évènement (addEventListener) sur la forme souhaitée. Cette méthode va récupéré l'action de l'utilisateur lorsqu'il passe la souris sur la forme et appeller une fonction qui rend visible ou invisible le textbox.
 
 
// activation du mode mouseove
stage.enableMouseOver(30);
//application du eventListener sur la forme jaune pour appel à la méthode qui permet de faire appraître le texte contenu dans le textbox
this.jaune1.addEventListener("mouseover", seeTextJaune.bind(this));
//application du eventListener sur la forme jaune pour appel à la méthode qui permet de masquer le texte contenu dans le textbox
this.jaune1.addEventListener("mouseout", hideTextJaune.bind(this));
 
// déclaration de la fonction qui joue avec l'attribut visible du textbox pour le rendre visible
function seeTextJaune() {
  this.txtJaune.visible = true;
}
// déclaration de la fonction qui joue avec l'attribut visible du textbox pour le rendre invisible
function hideTextJaune() {
  this.txtJaune.visible = false;
}


=== Transformer une animation de la timeline principale en clip ===
=== Transformer une animation de la timeline principale en clip ===
Ligne 238 : Ligne 348 :
Supposons que vous avez une animation intéressante dans un fichier *.fla que vous désirez utiliser comme un clip intégré.
Supposons que vous avez une animation intéressante dans un fichier *.fla que vous désirez utiliser comme un clip intégré.


; Étape 1 - Créez un nouveau symbole de clip
; Étape 1 - Créez un nouveau symbole de clip dans un nouveau fichier
(voir ci-dessus)
(voir ci-dessus)
* Supposons que le fichier est appelé clips.fla
* Supposons que le fichier est appelé clips.fla
* Menu ''Insert-> New symbol''
* Menu ''Insert-> New symbol''
* Select ''Movie Clip''et donnez un bon nom
* Select ''Movie Clip ''et donnez un bon nom
Vous devriez maintenant voir un scène vide en mode d'édition ce ce nouveau symbole.
Vous devriez maintenant voir une scène vide, car vous êtes en mode d'édition de ce nouveau symbole.


; Étape 2 - Copier les images à partir du fichier *. fla
; Étape 2 - Copier les images à partir du fichier *. fla
Ligne 254 : Ligne 364 :


Voilà, vous avez maintenant un clip avec une animation. Retour à la scène....
Voilà, vous avez maintenant un clip avec une animation. Retour à la scène....
=== Utiliser un fichier *. fla en tant que bibliothèque externe ===
Une fois que vous avez des clips dans une bibliothèque, vous pouvez créer une bibliothèque à partager pour une réutilisation ultérieure.
; Étape 1 - Créez un nouveau fichier *. fla
* Copiez/collez les clips et graphiques intéressantes dans la bibliothèque de ce *.fla
* Puis enregistrez le fichier
; Étape 2 - importer un fichier *. fla en tant que librairie externe
* Menu ''File-> Import-> Open external library''
; Étape 3 - répéter
* Chaque fois que vous créez quelque chose d'intéressant, ouvrez le fichier fla et copiez / collez de nouveau.


=== Exemple flying kite (CC 2014.2 / HTML) ===
=== Exemple flying kite (CC 2014.2 / HTML) ===


Cet exemple montre comment jouer et arrêter un clip embarqué avec un bouton.
Cet exemple montre comment jouer et arrêter un clip embarqué avec un bouton.
Regardez d'abord [http://tecfa.unige.ch/guides/flash/cc-html5/embedded-movie-clips/kite-movie.html l'application kite] pour avoir une idée. Voir aussi les photos ci-dessus.
Regardez d'abord [http://tecfa.unige.ch/guides/flash/cc-html5/embedded-movie-clips/kite-movie-html.html l'application kite] pour avoir une idée.


; Étape 1 - Créez le clip qui va bouger
; Étape 1 - Créez le clip qui va bouger
* Créez un clip. Dans l'exemple il s'appelle "Kite clip"
* Créez un clip (CTRL-F8, c.f. aussi ci-dessus). Dans l'exemple il s'appelle <code>Kite clip</code>. Il est important de ne pas créer une animation dans la main timeline !
* Insérez un dessin
* Insérez un dessin dans ce nouveau clip.
* Transformez le dessin en symbole (clip ou graphisme). Dans l'exemple c'est un graphisme qui s'appelle "Kite"
* Transformez le dessin dans le clip en symbole (clip ou graphisme). Dans l'exemple c'est un graphisme qui s'appelle <code>Kite</code>. Sinon, on ne peut pas l'animer.
* Donc, pour finir, vous avez un clip pour l'animation et un symbole (graphisme ou autre clip) inséré dans le premier clip.


; Étape 2 - Si nécessaire, glissez le clip sur la scène et donnez lui un nom d'instance
; Étape 2 - Si nécessaire, glissez le clip sur la scène et donnez lui un nom d'instance
* De la bibliothèque, glissez le clip sur la scène
* De la bibliothèque, glissez le clip sur la scène
* Dans le panneau de propriétés, donnez-lui un nom, par exemple ''kite''
* Dans le panneau de propriétés, donnez-lui un nom, par exemple ''<code>kite</code>''
Vous devriez voir quelque chose comme sur la capture d'écran suivante:
Vous devriez voir quelque chose comme sur la capture d'écran suivante:
[[image: flash-cc-html-create-movie-clip-symbol.png | thumb | none | 900px | Un clip "kite" sur la scène]]
[[image: flash-cc-html-create-movie-clip-symbol.png | thumb | none | 900px | Un clip "kite" sur la scène]]
Ligne 288 : Ligne 385 :


* Double-cliquez sur l'instance du clip
* Double-cliquez sur l'instance du clip
* Ensuite, procédez comme expliqué dans [[]]
* Ensuite, procédez comme expliqué dans les tutoriels sur l'animation, c-a-d. ajoutez une [[Flash CS4 - Interpolation de mouvement|animation de mouvement]] ''dans la timeline du clip'' (et non pas sur la timeline principale).


* etc..
* etc..
Ligne 294 : Ligne 391 :


; Étape 4 - Ajouter des boutons
; Étape 4 - Ajouter des boutons
* Retournez à la scène.
* Retournez à la scène
* Nous utilisons deux composants "Flash", mais n'importe quel symbole peut servir de bouton))
* Nous utilisons deux boutons
* Chacun de ces boutons a un nom d'instance: ''stopBtn '' et ''goBtn''
* Chacun de ces boutons a un nom d'instance: ''stopBtn '' et ''goBtn''


Étape 5 - Ajoutez le code JavaScript
Étape 5 - Ajoutez le code JavaScript


* Au début, on arrête le clip avec <code> this.kite.stop(); </code>. Sinon le clip pour le cerf-volant sera automatiquement démarré.
* Au début, on arrête le clip avec <code> this.kite.stop();</code>. Sinon le clip pour le cerf-volant sera automatiquement démarré.
* Un clic sur le goBtn lancera la fonction startIt lorsque l'utilisateur clique dessus. Cette fonction va alors exécuter ''this.kite.play ()''.
* Un clic sur le goBtn lancera la fonction startIt lorsque l'utilisateur clique dessus. Cette fonction va alors exécuter ''this.kite.play ()''.
* Le bouton stopBtn est programmé de la même manière.  
* Le bouton stopBtn est programmé de la même manière.  
Ligne 333 : Ligne 430 :
: [http://tecfa.unige.ch/guides/flash/cc-html5/embedded-movie-clips/kite-movie-html.html kite-movie-html.html]
: [http://tecfa.unige.ch/guides/flash/cc-html5/embedded-movie-clips/kite-movie-html.html kite-movie-html.html]
: Source: [http://tecfa.unige.ch/guides/flash/cc-html5/embedded-movie-clips/kite-movie-html.fla kite-movie-html.fla]
: Source: [http://tecfa.unige.ch/guides/flash/cc-html5/embedded-movie-clips/kite-movie-html.fla kite-movie-html.fla]
: Répertoire: [http://tecfa.unige.ch/guides/flash/cc-html5/embedded-movie-clips/ http://tecfa.unige.ch/guides/flash/ex/embedded-movie-clips/]
: Répertoire: http://tecfa.unige.ch/guides/flash/cc-html5/embedded-movie-clips/
: Notice: Il existe aussi une [http://tecfa.unige.ch/guides/flash/cc-html5/embedded-movie-clips/kite-movie.fla version Flash].
: Notice: Il existe aussi une [http://tecfa.unige.ch/guides/flash/cc-html5/embedded-movie-clips/kite-movie.fla version Flash].


Exercice: Ajouter une autre animation clip. Par exemple un alien volant.
Exercice: Ajouter une autre animation clip. Par exemple un alien volant.
=== Exemple Perroquets ===
* Dans cet exemple, on crée 3 instances du même clip.
* Ensuite pour lancer les animations, on transforme chacun en bouton. Donc en cliquant sur un peroquet on le reveille.
[[Fichier:Flash-cc-html-embedded-movie-clip-parrots.png|vignette|néant|900px|3 clips perroquets ]]
Le clip perroquet a trois animations de mouvement, c'est-à-dire 2 rotations pour la bouche et une pour la queue
[[Fichier:Flash-cc-html-embedded-movie-clip-parrots-edit.png|vignette|néant|900px|3 clips perroquets ]]
Ces animations sont déclenchés par des clics sur les instances. On utilise deux méthodes différentes.
Fichiers:
* [http://tecfa.unige.ch/guides/flash/cc-html5/embedded-movie-clips/parrots-html.fla parrots-html.fla]
* [http://tecfa.unige.ch/guides/flash/cc-html5/embedded-movie-clips/parrots-html.html parrots-html.html]
Sources clip art sur OpenClipart.org
* https://openclipart.org/detail/193812/parrot-remix
* https://openclipart.org/detail/190243/doves-on-a-branch-for-v-day


=== Exemple avion avec 2-3 niveaux d'imbrication de symboles ===
=== Exemple avion avec 2-3 niveaux d'imbrication de symboles ===


Le principe est simple: On crée une bibliothèque de clips animés. Ensuite on peut combiner de différentes manières. Par exemple: (a) créer des bouts d'animation, (b) créer des clips qui les utilisent, (c) créer une instance dans la timeline.
Le principe est simple: On crée une bibliothèque de clips animés. Ensuite on peut combiner de différentes manières. Par exemple: (a) créer des bouts d'animation, (b) créer des clips qui les utilisent, (c) créer une instance dans la timeline.
* Voir aussi la notation avec les "." pour lancer les hélices (dans les deux exemples)


Exemple:
Exemple:
Ligne 348 : Ligne 465 :
* Clip C = Clip hélice qui tourne
* Clip C = Clip hélice qui tourne
* Clip D = Avion qui contient B et 2 fois C  
* Clip D = Avion qui contient B et 2 fois C  
* Clip E = Animation avion qui bouge et qui contient C + interpolation de mouvement et qu'on met sur la timeline.
* Clip E = Animation avion qui bouge et qui contient deux fois D


Voir:
Sources:
* L'utilisateur ne verra aucune différence entre [http://tecfa.unige.ch/guides/flash/ex5/embedded-movie-clips/avions.html avions.html] (animation dans la main timeline/chronologie, c-a-d- il manque l'étape "clip E") et [http://tecfa.unige.ch/guides/flash/ex5/embedded-movie-clips/avions-clip.html avions-clip.html] (toute l'animation est dans un clip)


* [http://tecfa.unige.ch/guides/flash/cc-html5/embedded-movie-clips/avions-clip-html.fla avions-clip-html.fla] (source CC clip)
* [http://tecfa.unige.ch/guides/flash/cc-html5/embedded-movie-clips/avions-clip-html.html avions-clip-html.html]


Sources:
=== Aide à la programmation avec les code snippets ===


* [http://tecfa.unige.ch/guides/flash/ex5/embedded-movie-clips/avions.fla avions.fla] (CS5 simple)
Animate CC dispose d'une aide pour programmer les interactions selon le langage employé. On peut accéder à ces aides depuis le menu <code>Window</code> > <code>Code Snippets</code>.
* [http://tecfa.unige.ch/guides/flash/ex5/embedded-movie-clips/avions-clip.fla avions-clip.fla] (CS5 clips)
* [http://tecfa.unige.ch/guides/flash/ex4/embedded-movie-clips/avions.fla avions.fla] (CS4 simple)
* [http://tecfa.unige.ch/guides/flash/ex4/embedded-movie-clips/avions-clip.fla avions-clip.fla] (CS4 clips)
* [http://tecfa.unige.ch/guides/flash/ex5/embedded-movie-clips/avions.html avions.html]
* [http://tecfa.unige.ch/guides/flash/ex5/embedded-movie-clips/avions-clip.html avions-clip.html]


Voir aussi [[:en:Flash embedded movie clip tutorial|Flash embedded movie clip tutorial]] (EduTechWiki Anglais)
Pour illustrer ces aides, nous allons arrêter une animation à un frame :
# Positionez-vous au frame où vous souhaitez arrêter l'animation
# Puisque nous concevons une animation en HTML5/JS, aller sur le menu <code>HTML5 Canvas</code> >  <code>Timeline Navigation</code> >  <code>Stop at this frame</code>.


== Créer des instances de clip avec ActionScript ==
== Créer des instances de clip avec JavaScript ==


Voir [http://edutechwiki.unige.ch/fr/AS3_-_Survol_du_langage_ActionScript#Utilisation_d.27un_clip_de_la_library Utilisation d'un clip de la library] dans [[AS3 - Survol du langage ActionScript]]
Je ne sais pas s'il existe un mécanisme similaire à celui de ActionScript (voir [http://edutechwiki.unige.ch/fr/AS3_-_Survol_du_langage_ActionScript#Utilisation_d.27un_clip_de_la_library Utilisation d'un clip de la library] dans [[AS3 - Survol du langage ActionScript]])
 
En attendant que je trouve une solution plus élégante, voici une procédure qui marche:


En résumé:
En résumé:
Etant donné que les scripts attachés à la timeline n'ont pas accès à la library, il faut d'aborder exporter l'item en question (par exemple un clip) pour ActionScript.
* Placez une instance sur la scène (Angl '''stage''') et mettez la en dehors de la plage d'affichage. Cela force Flash à exporter le symbole en tant que classe, lorsqu'il génère le code JavaScript pour CreateJs. Mais '''attention''', ne rendez pas l'objet invisible car il ne sera pas exporté. Je répète, évitez <code>this.myInstance.visible = false;</code>. A mon avis il s'agit d'un bug.
* Clic droit sur le clip (ou autre élément) dans la library
* Clic sur Properties et sélectionner Export for ActionScript
* Vous pouvez, si vous avez envie, changer le nom de la classe (par exemple "Cheese", normalement un nom de class est capitalisé)


Ensuite, avec ActionScript, on crée un ou plusieurs objets de cette classe. S'il s'agit d'un clip on le positionne et si nécessaire et on l'ajoute dans la scène. stage est la variable qui contient le graphe de scène (c-a-d. l'hiérarchie des objets visibles dans un frame donné).
* Ensuite dans le code ActionScript, vous trouvez la classe à instancier comme propriété de la variable <code>lib</code>
var newObj = new lib.myClip();
: par exemple
: <code>var personne = new Joe();</code>
Dans l'exemple suivant, on stocke le résultat - une nouvelle instance de <code>lib.Parrot_Clip</code> - dans une propriété de this.
this.newBird = new lib.Parrot_Clip();


Exemple pour un clip don't la classe s'appelle ''Cheese''
Exemple générateur de Perroquets (cliquer sur la branche):
* [http://tecfa.unige.ch/guides/flash/cc-html5/embedded-movie-clips/parrot-creation-html.html File: parrot-creation-html.html] (exemple live)
* [http://tecfa.unige.ch/guides/flash/cc-html5/embedded-movie-clips/parrot-creation-html.fla File: parrot-creation-html.fla] (source)
<source lang="actionscript">
<source lang="actionscript">
var fromage:Cheese = new Cheese();
// Clipart
// positionner l'objet
// Parrot: https://openclipart.org/detail/193812/parrot-remix
cheese.x=100;
// Branch: https://openclipart.org/detail/190243/doves-on-a-branch-for-v-day
cheese.y=100;
// ajouter l'objet sur la scène
stage.addChild(cheese);
</source>


== Piloter la timeline principale depuis un clip ==
// It seems that library objects cannot be exported.
// I therefore created an instance and had a look at the JS code.
this.Joe.visible = false;


Parfois vous avez besoin de contrôler la timeline (scénario) principale depuis l'intérieur d'un clip. Par exemple, vous pouvez déplacer l'utilisateur vers un autre frame à la suite d'une interaction. Pour ce faire, vous aurez à dire au script du clip que vous vous référez à un objet défini dans la timeline principale. Dans le script du clip, utilisez quelque chose comme:
this.createBtn.addEventListener("click", createBird.bind(this));


MovieClip(root).yourbutton.visible=true;
var counter = 1;
MovieClip(root).gotoAndPlay("activity_1");


Encore dit autrement: ''MovieClip (root)'' devant une propriété ou une méthode raconte essentiellement Flash d'aller chercher dans la timeline principale au lieu de celle du clip.
function createBird(ev)
{
//Notice the lib.something for creating an instance !!
        this.newBird = new lib.Parrot_Clip();
// position the thing
this.newBird.x = 180 + counter * 30;
this.newBird.y = 60 + counter * 8;
// add an event handler for hiding
this.newBird.on ("click", hideBird)
// add it to the stage
stage.addChild(this.newBird);
//console.log ("newBird=" + this.newBird + " at x=" + this.newBird.x);


En termes plus techniques, vous devrez transformer ('''cast''') la propriété '''root''' en un clip. {{citation|'''root''' est de type '''DisplayObject''' et son '''parent''' est de type '''DisplayObjectContainer'''. Aucun de ceux-ci peuvent avoir une timline (plusieurs images) et c'est pourquoi les méthodes "timeline" ne fonctionne pas sur eux. Etant donné que MovieClip est une sous-classe de ces deux classes le cast marche.}} (AS3: Main Timeline Control From Inside a Movie Clip, retrieved June 2007)
counter++;
 
.... C'est "astuce" (assez horrible) est du "know how" essential pour le développement de jeux et d'applications interactives dans l'enseignement, car la timeline principale est habituellement juste utilisé pour définir des états d'applications, des sous-jeux, etc...
 
=== Exemple concret avec application drag and drop ===
 
On va créer une petite application drap and drop incluant une condition selon laquelle l'utilisateur ne peut pas accéder au bouton lui permettant de passer à la suite tant qu'il n'a pas fini le jeu. La condition est énoncée dans l'AS du clip et le bouton se trouve sur la scène. Il faudra donc utiliser la propriété MoveiClip(root) qui dit à Flash d'aller chercher dans la timeline principale au lieu de celle du clip.
 
*Etape 1 : Création d'objets movie clip et d'un clip qui contiendra l'application drag and drop
 
[[Fichier:Etape1.jpg|Etape1.jpg]]
 
 
*Etape 2 : Création de zones de textes dans le clip contenant l'application drag and drop
 
[[Fichier:Etape2.jpg|Etape2.jpg]]
 
 
*Etape 3 : Deux zones de textes créées, une pour les objets oranges et une pour les objets rouges
 
[[Fichier:Etape3.jpg|Etape3.jpg]]
 
 
*Etape 4 : Créer une zone de texte et placer les objets movie clip dans le clip drag and drop (! bien donner un nom d'instance à chaque objet)
 
[[Fichier:Etape4.jpg|Etape4.jpg]]
 
 
*Etape 5 : Code AS pour l'application drag and drop
 
[[Fichier:Etape5.jpg]]
 
 
Coller le code suivant dans l'Actions du clip drag and drop :
 
<source lang="actionscript">
 
var hits = 0;
// Enregistre les fonctions d´événements de souris
carre_rouge.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
carre_rouge.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
carre_orange.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
carre_orange.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
rond_rouge.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
rond_rouge.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
rond_orange.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
rond_orange.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
// Définit l´événement mouse down handler (l´utilisateur déplace l´objet)
function mouseDownHandler(evt:MouseEvent):void {
var object = evt.target;
// limite le déplacement à l´intérieur du canevas
object.startDrag();
}
function mouseUpHandler(evt:MouseEvent):void {
var obj = evt.target;
// obj.dropTarget donne la référence de la forme de l´objet sur laquelle déposer l´objet
var target = obj.dropTarget;
// Si la cible existe, alors nous demandons à la fonction test_match function de comparer
//moved obj and target à l´endroit déposé.
if (target != null)
{
test_match(target, obj);
}
obj.stopDrag();
}
}
function test_match(target,obj) {
// Teste si l´une des quatre paires va ensemble
if ( (target == box_orange && obj == carre_orange) ||
            (target == box_orange && obj == rond_orange) ||
    (target == box_rouge && obj == carre_rouge) ||
            (target == box_rouge && obj == rond_rouge) )
{
// Une paire va ensemble
hits = hits+1;
textField.text = "Yes ! You got one !";
// Rendre l´objet transparent
obj.alpha = 0.5;
// Supprime l´écouteur d´événement. L´objet ne peut plus être bougé
obj.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
obj.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
// Vérifie si le jeu est fini
if (hits == 4)
{
textField.text = "Made it !!";
}
}
else
{
textField.text = "Missed :(";
}
}
</source>
Code basé sur celui présenté [[Flash_tutoriel_drag_and_drop#Application_drag_and_match_.28version_pour_d.C3.A9butants.29 | ici]].
*Etape 6 : Glisser le clip drag and drop sur la scène (ne pas oublier d'insérer la font dans la library)
[[Fichier:Etape6.jpg]]
*Etape 7 : Création d'une 2ème page, donc insérer un  keyframe dans la timeline principale
[[Fichier:Etape7.jpg]]
*Etape 8 : Création d'un bouton movie clip, nommé btn_suite et placé dans la 1ère frame de la timeline principale
[[Fichier:Etape8.jpg]]
Pour plus de détail sur les boutons, c'est [[Flash_CS4_-_Boutons|ici]].
*Etape 9 : Passer à la 2ème page
On veut que lorsque l'utilisateur clique sur le bouton, il passe à la page suivante. Pour ce faire, insérer ce code dans l'actions de la timeline principale :
<source lang="actionscript">
stop();
/* Click to Go to Frame and Stop
Clicking on the specified symbol instance moves the playhead to the specified frame in the timeline and stops the movie.
Can be used on the main timeline or on movie clip timelines.
Instructions:
1. Replace the number 5 in the code below with the frame number you would like the playhead to move to when the symbol instance is clicked.
*/


btn_suite.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndStopAtFrame);
function hideBird ()
 
function fl_ClickToGoToAndStopAtFrame(event:MouseEvent):void
{
{
gotoAndStop(2);
this.visible = false;
}
}
</source>
*Etape 10 : Finir la tâche avant de passer à la suite
On souhaite que l'utilisateur ne puisse pas passer à la suite sans avoir fini la tâche. Ici, la tâche étant d'associer chaque objet à la bonne box.
Dans l'AS du clip drag and drop, au début du code, on ajoute :


<source lang="actionscript">
MovieClip(root).btn_suite.visible = false; //bouton présent mais invisible
</source>
</source>
Et dans le code, on ajoute :
<source lang="actionscript">
MovieClip(root).btn_suite.visible = true; //bouton devient visible quand le jeu est fini
</source>
[[Fichier:Etape9.jpg]]
Le bouton btn_suite se trouvant sur la scène principale et non dans le clip drag and drop, il faut utiliser la propriété MoveiClip(root) qui dit à Flash d'aller chercher dans la timeline principale au lieu de celle du clip.
'''Résultats'''
[http://tecfaetu.unige.ch/perso/maltt/baehlem0/tuto/exemple.fla Application drag and drop<nowiki>]</nowiki>]


== Remerciement et modification du copyright ==
== Remerciement et modification du copyright ==


{{copyrightalso|[http://creativecommons.org/licenses/by-nc-sa/3.0/ Attribution-Noncommercial-Share Alike 3.0 Unported]. Une '''partie du texte''' de cet article a été repris (avec des modifications) des manuels Adobe [http://help.adobe.com/en_US/Flash/10.0_UsingFlash/ Using Flash] et [http://help.adobe.com/fr_FR/Flash/10.0_UsingFlash/ Utilisation de Flash]. Vous devez également citer ces sources et répliquer le copyright. Cela concerne aussi les images de Adobe qu'on a répliquées ici.}}
{{copyrightalso|[http://creativecommons.org/licenses/by-nc-sa/3.0/ Attribution-Noncommercial-Share Alike 3.0 Unported]. Une '''partie du texte''' de cet article a été repris (avec des modifications) des manuels Adobe [http://help.adobe.com/en_US/Flash/10.0_UsingFlash/ Using Flash] et [http://help.adobe.com/fr_FR/Flash/10.0_UsingFlash/ Utilisation de Flash]. Vous devez également citer ces sources et répliquer le copyright. Cela concerne aussi les images de Adobe qu'on a répliquées ici.}}

Dernière version du 1 février 2018 à 08:06

Introduction

Objectifs d'apprentissage

  • Connaitre les trois types de symboles en Flash CS3/CS4/CS5/CC
  • Créer des clips (Angl. movie clip)
  • Arrêter/démarrer des clips imbriqués avec JavaScript (et non pas ActionScript !)
  • Concevoir un fichier Flash comme un assemblage de petits clips imbriqués, c.a.d. des animations dans des animations.

Prérequis

Matériel (fichiers *.fla à manipuler)

Qualité et niveau

Ce tutoriel aidera les adeptes de la technique à démarrer. Le niveau de ce tutoriel est un peu haut pour les novices, mais peut servir comme fiches pratiques dans un atelier.

Prochaines étapes

  • Plus de dessin (c.f. les prérequis)

....

Autres versions

Les symboles Flash

Le mot symbol (angl.) ou symbole vient de l'ancienne terminologie Flash et ne fait plus beaucoup de sens. Un symbol est un objet Flash "lourde" qui contient des définitions pour des animations, boutons et animations. En informatique, un symbole correspond à une classe, c-a-d. il s'agit d'un objet générique.

Il existe trois types de symboles: une définition pour (1) un graphique, (2) un bouton ou un (3) "clip" (possibilité d'animation). Un symbol est réutilisable dans le même document ou dans un autre. Chaque symbole que vous créez ou utilisez est inséré dans la bibliothèque (library).

Le symbole n'est jamais utilisé directement dans un clip, il faut créer une instance, appelé aussi occurrence. Seulement les instances vont être utilisées sur la scène. Un symbole peut avoir plusieurs instances, mais une instance n'est reliée qu'à un seul symbole. Vous pouvez partager les symboles entre les documents en tant que ressources de bibliothèque partagées pendant la programmation et/ou l'exécution.

Chaque symbole de type clip (français) ou movie clip (Anglais) possède son propre scénario (timeline), scène et calques. Vous pouvez y ajouter des images, des images-clés et des calques ou encore d'autres symboles, exactement comme dans le scénario principal. Autrement dit, pour faire une animation, vous pouvez ...

  • Juste utiliser la timeline (scenario) principale: Dans ce cas, vous n'utilisez qu'un seul clip avec animation, c-a-d le fichier Flash lui-même. Cette façon de procéder est cher aux designers Flash traditionnels et on ne la recommande pas dans un contexte de multimédia interactif.
  • Créer une animation à l’intérieur d'un symbole de type clip (c.f. aussi ci-dessous): Vous pourrez ensuite créer des instances de ce clip, autrement dit, poser des objets animés dans une scène. Bien entendu, ce clip peut lui aussi contenir des clips. L'avantage de cette méthode est de pouvoir facilement réutiliser des composants. Son désavantage est qu'il faut apprendre un peu de JavaScript pour lancer et arrêter des animations.

Les trois types de symboles Flash

Flash comprend trois types d'objets génériques. Dans la plupart des cas, on utilisera le symbole de type clip.

  1. Les graphic symbols (symboles graphiques) GraphicSymbol.png représentent des images statiques et sont réutilisables. Les symboles graphiques contribuent moins à la taille du fichier FLA que les boutons et les clips car ils n'ont pas de scénario (timeline) associé. Autrement dit, il s'agit de sortes de briques graphiques ayant une puissance limitée.
  2. Utilisez des button symbols (symboles de bouton) Button-icon.png pour créer des boutons interactifs qui réagissent aux clics, au "toucher" ou à d'autres actions de la souris. Un symbole de bouton contient tjrs une animation image par image (voir Flash CS4 - Boutons.
  3. Les movie clip symbols (symboles de clip) MovieClip.png sont faits pour créer des éléments d'animation réutilisables. Ils possèdent leur propre scénario et ils peuvent donc contenir des contrôles interactifs, des sons, voire des occurrences d'autres clips. En outre, les clips sont programmables à l'aide de code ActionScript.

Flash Pro inclut des symboles prédéfinis:

  • Les boutons que vous retrouvez dans la library - button.fla de Flash Profession CS3/4/5/6. Ils n'existent plus dans Flash CC, mais on peut les réimporter.
  • Les composants intégrés sont des clips programmés en ActionScript (voir: Flash CS4 - Composants), et ils ne marchent donc pas pour HTML5.

Note sur la traduction: En Anglais un symbole ayant son propre scénario s'appelle movie clip, en français juste clip. En français, clip vidéo (traduction de movie clip veut dire autre chose, c.a.d. se réfère à une vidéo importée ....)

Créer des symboles

Vous savez probablement déjà créer des symboles, mais on répète quand même la procédure:

(1) Créer un nouveau symbol vide

Faites une des opérations suivantes:

  • Sélectionnez menu Insert -> New symbol
  • Cliquez sur le bouton New symbol, en bas à gauche du panneau library
  • Finalement, New symbol dans le menu d'options du panneau library (en haut à droite)

Ensuite, pour l'éditer, double-clic soit sur le symbole dans la library ou sur une instance qui se trouve sur la scène. C.f. ci-dessous.

(2) Conversion d'éléments sélectionnés en symbole

  1. Sélectionnez un ou plusieurs éléments sur la scène, Effectuez l'une des opérations suivantes :
    • Cliquez du bouton droit (Windows) ou en appuyant sur la touche Contrôle (Macintosh), puis sélectionnez Convert to symbol
    • Menu Modify > Convert to symbol (ou utilisez le raccourci clavier F8)
    • Faites glisser la sélection dans le panneau library (bibliothèque)
  2. Dans la boite de dialogue Convert to symbol, entrez le nom du symbole, puis sélectionnez son comportement, c'est à dire choisir entre graphic symbol, button symbol et movie clip symbol. Vous pouvez transformer un symbole plus tard, enfin si vous transformez un clip ou un bouton vous allez perdre son contenu interactif.
  3. Cliquez dans la grille d'alignement afin de positionner le point d'alignement/alignement du symbole et que définit l'origine du système des coordonnés de l'objet. Par défaut (selon les conventions infographiques) il se trouve en haut à gauche. Nous préférons le centre pour les movie clip, et en haut à gauche pour les boutons et les graphiques.
  4. Cliquez sur OK.

Flash ajoute le symbole à la library. La sélection sur la scène devient une occurrence (instance) du symbole.

Edition de symboles

Si ce n'est pas déjà fait, je suggère d'ajouter la barre d'édition: Window-> Tool bars -> Edit bar. Elle va vous montrer exactement à quel niveau vous éditez, par exemple au niveau de la timeline principale ou dans un symbol.

Dans l'image ci-dessous, vous pouvez voir une cascade de niveaux d'édition. Actuellement, nous sommes en train d'éditer le graphisme d'un clip appelé "Parrot_nose" !

Mode d'édition de symbole - Edition du graphisme d'un clip inséré dans un clip

Vous pouvez éditer un symbole de plusieurs façons:

  • Double clic (Windows) ou clic-droit->Edit dans la bibliothèque (library). Cela ouvre une fenêtre d'édition où on ne voit que cet objet.
  • Double clic sur une instance avec le selection tool. Dans ce cas vous verrez également les autres objets de la scène, mais ils sont "grisés", donc pas éditables. Clic droit sur une instance, puis Edit in Place fait la même chose
  • Clic droit sur une instance. Ensuite choisir soit Edit, soit Edit in place, soit Edit in New window (CS5). La dernière opération ouvre une nouvelle fenêtre.

Pour s'exercer, vous pouvez ouvrir le *.fla suivant et remplacer la couleur du nez des perroquets.

Important: lors de la création de vos symboles (même si très basiques comme des carrés), vous devez impérativement placer les points d'alignement de façon réfléchie, surtout si vous voulez faire apparaitre des instances de cet objet via JaavaScript et les positionner finement. Deux stratégies sont conseillées: la première est celle de centrer le point par rapport à l'image (si un symbole fait 50x100px, pour le centrer vous devez le positionner en x: -25, y: -50, donc la moitié de la hauteur et de la largeur), l'autre stratégie est celle de déterminer un coin (soit en haut à gauche ou à droite; dans les deux cas on aura la position x: 0, et puis soit y:0, soit y:100, si la hauteur du symbole est de 100px). Garder une approche systématique lors de la création des symboles facilitera votre travail plus tard. Pour changer le point d'alignement, c.f. ci-dessous.

Attention

A tout moment veuillez bien faire attention à quel niveau vous éditez ! Editer un objet (par exemple ajouter des dessins) alors que vous croyez travailler sur la timeline (scénario) principale est assez désastreux ...

Pour revenir à un niveau supérieur, vous pouvez

  • Cliquer sur le nom de la scène (séquence) dans la barre Modification.
  • Cliquer sur la flèche "précédent" Editbar-back.png
  • Menu Edit -> Modify document

Les clips

Création d'un clip avec animation interne

Examinons maintenant une façon de créer des clips d'animation Flash dans les fichiers flash.

Pour créer un nouveau clip dans un fichier d'animation Flash, nous rappelons qu'on peut procéder comme suit:

  • Menu Insert-> New symbol
  • Selectionner Movie Clip et de donner un bon nom. On suggère de donner un nom comme "Clip XXX" à un objet qui contiendra une animation.

Sinon, vous pouvez aussi transformer un graphique existant en clip

  • Dessiner un objet sur la scène
  • Clic-droit-> Convert to symbol. Sélectionnez Movie Clip'

Point d'alignement et point de transformation

Les points d'alignement

Aussi appelé point d'enregistrement (traduction directe de l'Anglais registration point)

Comme on l'a déjà expliqué, chaque clip a un point d'alignement qui définit à quel endroit du dessin correspondent les points de coordonnées x=0 et y=0 (par exemple, supérieur gauche ou milieu). Lorsqu'on positionne un objet (par exemple dans une animation) on le positionnent par rapport à ce point. Ce point d'alignement est affichée par une petite croix. Vous pouvez changer ce point d'alignement en déplaçant le dessin à un autre endroit. Il suffit d'éditer le symbol (double clic sur une instance ou encore sur le symbole dans la library).

  • Modifier l'objet dans la librairie (!). Puis le bouger ou mieux, utiliser le panneau "Properties": Selectionner le tout (CTRL-A) puis mettre x=0 et y=0 si l'alignement doit être en haut à gauche (standard pour tout graphisme 2D). La croix au centre (+) que l'on voit sur le graphisme représente le point d'alignement.

Note: Le point d'alignement (le centre de ses propres coordonnées) n'est pas la même chose que son point de transformation que vous pouvez déplacer avec le "Free Transform tool", c.f. en bas)

Convertir un groupe de graphiques en clip - le point d'alignement est au centre
Les points de transformation

Le cercle blanc que vous pouvez ensuite voir au milieu d'un clip est appelé le point de transformation ou point de rotation ou point cetnral (Center Point) et il a une fonction similaire. Il définit l'endroit où l'objet sera attaché à un guide de mouvement autour duquel il tourne. Vous pouvez le déplacer vers un autre endroit avec l'outil de transformation libre (Free transform tool). Par défaut, le point de transformation est au même endroit que le point d'alignement. Pour ramener un point de transformation au point d'alignement il faut double-cliquer dessus.

Modification d'un clip d'animation

Rappelons qu'il existe deux manières de modifier un clip:

(1) En vue "stand-alone" vous pourrez voir uniquement les composantes du clip. Double-cliquez sur l'''icône clip'' (pas son nom) dans la bibliothèque. Vous pouvez maintenant travailler avec sa chronologie (timeline) interne, donc créer une animation interne à l'objet.

(2) Modifier un objet avec la scène en arrière-plan. Si vous placez une instance du clip sur la scène et puis double-cliquez sur cette instance, vous pouvez modifier le clip tout en voyant les objets de la scène alors que vous éditez juste le clip. Ci-dessous est une copie d'écran d'une situation où nous éditons un symbole de clip dans un contexte. La scène elle-même est "grisée" (image et boutons).

Dans un clip vous pouvez faire ce que vous appris dans les tutoriels précédents, p.ex. dans le Flash CS4 - Interpolation de mouvement. En d'autres termes, les clips ont leur propre scénario comme vous pouvez le voir sur l'image ci-dessus. L'exemple ci-dessous implémente une animation de type motion tween pour un pingouin, c'est à dire on fait bouger son bras droit. Dans la copie d'écran ci-dessous en est en train d'éditer le "Pink pinguin clip". Vous pouvez voir deux interpolations de mouvement. Le bras droit en train d'être édité a son center point en haut à droit pour pouvoir le tourner.

N'oubliez pas de revenir à la scène une fois que vous avez fini, par exemple en double-cliquant sur la "scène". Assurez-vous que vous savez à quel niveau vous modifiez et où placer les objets!

Pink pinguin clip arm movement animation

Fichiers:

Insérer une animation existante dans un nouveau document

Il existe des situations où on désire juste copier un ou plusieurs calques (layers) et qui contiennent des animations. C'est facile à condition d'utiliser le menu contextuel (clic droit).

Créez un nouveau symbole de type "movie clip" (Menu Insert->New Symbol ou CTRL-F8).

Allez sur votre animation déjà réalisée et sélectionnez tous les layers dans la timeline. Pressez la touche "CTRL" avant de sélectionner avec la souris. Il est également possible de ne copier que certains frames. Ensuite clic-droit sur cette sélection et copy frames et coller tout dans votre nouvelle animation en utilisant de nouveau le menu contextuel (clic droit) paste frames. Puis glisser ce nouveau clip dans le layer/frame approprié du nouveau fichier Flash.

Pilotage de clips avec JavaScript

Pilotage d'un clip - survol

Créez un clip ou faites glisser un clip à partir de la bibliothèque sur la scène et donnez-lui tout-de-suite un nom d'instance. Rappelez-vous que les noms d'instance doivent être simple, par exemple books et pas quelque chose comme animation géniale de livres. Un nom d'instance doit commencer par une lettre, suivi par d'autres lettres, chiffres ou le signe "_" seulement.

Ensuite, il faut créer un bouton. N'importe quel symbole peut faire office de "button", y compris l'objet animé lui-même (lisez le tutoriel Animate CC 2015 HTML5 Canvas - Boutons. Le bouton sera utilisé pour déclencher une fonctions une fois que l'utilisateur clic dessus:

this.monBouton.addEventListener("click", startAnimation.bind(this));

Ensuite il faut définir la fonction startAnimation. Supposons que le nom de l'instance d'un clip soit books. Vous pouvez maintenant utiliser du code JavaScript pour manipuler ce clip depuis cette fonction. Par exemple:

Jouer un clip
 this.books.play();
Pour arrêter un clip
 this.books.stop();
Rendre visible ou invisible un clip
 this.books.visible = false;
 this.books.visible = true;

Ci-dessous, il s'agit de code exemple. Donc si votre instance s'appelle pingu, il faut changer, par ex:

 this.pingu.play ();

Astuce: Les clips vidéo commencent à jouer dès qu'ils se trouvent dans l'image (frame) courante. Par exemple si vous les mettez dans dans un frame qui s'étale sur plusieurs frames, ils vont continuer à jouer jusqu'à ce que l'exécution du scénario principal tombe sur une autre image clef (keyframe) dans le même layer. Si vous préférez que le clip soit arrêté lors du chargement:

  • Modifier le clip (double clic)
  • Ajouter un calque "Actions" si nécessaire
  • Ajouter cette méthode JavaScript dans le frame 1.
 this.stop ();

Pour plus de détails, veuillez consulter les exemple (y compris leur code source) ci-dessous.

Lancer un clip après x temps

Lorsque vous avez des animations qui commencent à devenir complexes comme des cinématiques il peut devenir difficile de la faire exécuter sur un seul clip. Il est alors parfois plus simple de construire des bouts d'animation séparément et de les intégrer par la suite. Imaginons que nous voulons faire l'animation d'une fontaine à levier. Nous voulons que de l'eau sorte un moment après avoir commencé à actionner le levier. En résumé la cinématique se passe en boucle en deux étapes:

  1. la pompe est actionnée (l'eau ne sort pas).
  2. la pompe est toujours actionnée et l'eau sort.

Si on faisait ça dans un seul clip alors ces deux étapes seraient répétés en boucle et donc dans l'animation il y aurait des moments où l'eau s'arrête de sortir.

Garretv0 1. fontaine 1 clip.png

Or nous voulons qu'une fois que l'eau a commencé à sortir cela ne s'arrête plus d'où l'utilité d'avoir fait deux animations (une pour la fontaine et une autre pour l'eau).

Garretv0 2. fontaine 2 clip.png

Il va donc falloir faire tourner les deux animations en boucle mais que l'animation de l'eau commence à tourner quelques secondes plus tard après que l'animation de la fontaine ait commencé.

Procédure:

  • Créer l'animation (clip) de la fontaine
  • Créer l'animation de l'eau
  • Insérer les deux animations dans la scène principale et leur donner un nom (fontaine et eau).

Une fois ces trois étapes exécutés nous allons devoir ajouter du code afin de lancer l'animation de l'eau après x secondes. Il faudra donc écrire du code (f9 ou fn+f9). Voici la fonction qu'il faudra insérer au début de votre code:

fairePause = function(symbole, visible, secs) {
	symbole.stop();
	if(visible == false){
		symbole.visible=false;
	}
	var intID = setInterval(lancer, secs * 1000, symbole);
	function lancer(symbole) {
		clearInterval(intID);
		if(visible == false){
			symbole.visible=true;
		}		
		symbole.play();
	}
};

Cette fonction permet de lancer une animation après x secondes et de dire si l'animation doit rester invisible ou pas tant qu'elle n'a pas été lancée. Ensuite il suffira juste de lancer l'animation de la fontaine et celle de l'eau en utilisant la fonction fairePause. Il faudra plus que copier à la suite le code suivant à la suite:

this.fontaine.play();
fairePause(this.eau, false, 3);

Ici l'animation de l'eau sera lancée après 3 secondes et ne s'affichera pas avant les 3 secondes. Si on veut qu'elle s'affiche dès le chargement de la page il faudra mettre "true" à la place de "false".


Répéter un clip x fois

Par défaut, lorsque l'on créé une animation celle-ci se répète en boucle. Il serait parfois utile de définir combien de fois nous voulons répéter une animation.

Procédure:

  • Créer votre animation (appelée rectangle dans l'exemple)
  • Insérer votre animation dans la scène principale

Cas 1: Vous voulez que votre animation se répète en boucle Tout est bon, vous n'avez plus rien à faire.

Cas 2: Vous voulez que votre animation se répète une seule fois

  • Ouvrir votre animation
  • Créer un nouveau calque (appelé Actions dans l'exemple)
  • Insérer le code suivant dans le nouveau calque (f9 ou fn+f9):
this.stop();
  • Placer ce code à la fin de l'animation:
Garretv0 3. code animation.png

Quand l'animation arrivera au frame 15 alors le this.stop(); s'exécutera et donc l'animation ne sera plus répétée. Au final l'animation sera répétée qu'une seule fois.

Cas 3: Vous voulez que votre animation se répète x fois

  • Sur votre scène principale, créer un nouveau calque (appelé Actions dans l'exemple)
  • Insérer le code suivant dans le nouveau calque (f9 ou fn+f9):
compteurAnimationRectangle = 0;
//Sert à dire combien de fois on va répéter l'animation
NbFoisAnimationRectangle = 3;
this.rectangle.play();

Il faudra créer une variable compteur et NbFois pour chaque animation que vous voudrez répéter un nombre particulier de fois. La variable compteur doit être insérée au début de votre code et devra toujours valoir 0. La variable NbFois vaudra le nombre de fois que l'on veut répéter l'animation (3 dans l'exemple). Cette variable sera placée avant l'instruction this.play(); de l'animation en question (rectangle dans l'exemple).

  • Ouvrir votre animation
  • Créer un nouveau calque (appelé Actions dans l'exemple)
  • Insérer le code suivant dans le nouveau calque (f9 ou fn+f9):
if(compteurAnimationRectangle >= 0){
		compteurAnimationRectangle++;
}


if(compteurAnimationRectangle == NbFoisAnimationRectangle){	
	this.stop();
	//this.visible=false;
	compteurAnimationRectangle = 0;
}
  • Placer ce code à la fin de l'animation:
Garretv0 3. code animation.png

A chaque fois l'animation arrivera au frame 15 alors le compteur compteurAnimationRectangle sera incrémenté. Lorsque celui-ci vaudra la valeur que nous avons indiqué que nous voulons que l'animation soit répétée grâce à notre variable NbFoisAnimationRectangle alors this.stop(); sera exécuté et donc l'animation ne sera plus répétée. Au final l'animation sera répétée NbFoisAnimationRectangle fois. Si vous voulez qu'à la fin des NbFoisAnimationRectangle répétitions votre animation disparaisse vous pouvez enlever les "//" devant "this.visible=false;".

Faire un effet de mouseover

L'exemple de code ci-dessous montre comment faire un effet de mouseover. Lorsque le curseur de la souris passe sur une forme, dans notre cas il s'agit d'une forme jaune (jaune1 dans le code), un textbox s'affiche contenant du texte faisant référence à cette forme. Il faut tout d'abord dire à la scène d'activer le mode mouse over, puis ouvrir un évènement (addEventListener) sur la forme souhaitée. Cette méthode va récupéré l'action de l'utilisateur lorsqu'il passe la souris sur la forme et appeller une fonction qui rend visible ou invisible le textbox.


// activation du mode mouseove
stage.enableMouseOver(30);
//application du eventListener sur la forme jaune pour appel à la méthode qui permet de faire appraître le texte contenu dans le textbox
this.jaune1.addEventListener("mouseover", seeTextJaune.bind(this));
//application du eventListener sur la forme jaune pour appel à la méthode qui permet de masquer le texte contenu dans le textbox
this.jaune1.addEventListener("mouseout", hideTextJaune.bind(this));
// déclaration de la fonction qui joue avec l'attribut visible du textbox pour le rendre visible
function seeTextJaune() {
 this.txtJaune.visible = true;
}
// déclaration de la fonction qui joue avec l'attribut visible du textbox pour le rendre invisible
function hideTextJaune() {
 this.txtJaune.visible = false;
}

Transformer une animation de la timeline principale en clip

Supposons que vous avez une animation intéressante dans un fichier *.fla que vous désirez utiliser comme un clip intégré.

Étape 1 - Créez un nouveau symbole de clip dans un nouveau fichier

(voir ci-dessus)

  • Supposons que le fichier est appelé clips.fla
  • Menu Insert-> New symbol
  • Select Movie Clip et donnez un bon nom

Vous devriez maintenant voir une scène vide, car vous êtes en mode d'édition de ce nouveau symbole.

Étape 2 - Copier les images à partir du fichier *. fla
  • Maintenant ouvrez le fichier FLA avec la timeline animée. Supposons que le fichier est appelé anim.fla
  • Sélectionner tous les calques et les cadres que vous désirez récupérer (par exemple avec un clic dans le premier layer/frame et un shift-clic dans le dernier layer/frame). Si vous voulez récupérer le tout, c'est simple: Shift-clic sur tous les layers (à gauche de la timeline)
  • Ensuite Clic droit quelque part dans cette sélection et Copy Frames.
  • Maintenant retournez au fichier clips.fla ouvert (vous devriez toujours être dans le mode édition de symbole).
  • Cliquer dans la frame 1 du calque 1 de ce clip encore vide
  • Puir clic-droit et Paste Frames.

Voilà, vous avez maintenant un clip avec une animation. Retour à la scène....

Exemple flying kite (CC 2014.2 / HTML)

Cet exemple montre comment jouer et arrêter un clip embarqué avec un bouton. Regardez d'abord l'application kite pour avoir une idée.

Étape 1 - Créez le clip qui va bouger
  • Créez un clip (CTRL-F8, c.f. aussi ci-dessus). Dans l'exemple il s'appelle Kite clip. Il est important de ne pas créer une animation dans la main timeline !
  • Insérez un dessin dans ce nouveau clip.
  • Transformez le dessin dans le clip en symbole (clip ou graphisme). Dans l'exemple c'est un graphisme qui s'appelle Kite. Sinon, on ne peut pas l'animer.
  • Donc, pour finir, vous avez un clip pour l'animation et un symbole (graphisme ou autre clip) inséré dans le premier clip.
Étape 2 - Si nécessaire, glissez le clip sur la scène et donnez lui un nom d'instance
  • De la bibliothèque, glissez le clip sur la scène
  • Dans le panneau de propriétés, donnez-lui un nom, par exemple kite

Vous devriez voir quelque chose comme sur la capture d'écran suivante:

Un clip "kite" sur la scène
Étape 3 - Créer une interpolation de mouvement guidés pour le clip
  • Double-cliquez sur l'instance du clip
  • Ensuite, procédez comme expliqué dans les tutoriels sur l'animation, c-a-d. ajoutez une animation de mouvement dans la timeline du clip (et non pas sur la timeline principale).
  • etc..
Edition d'un un clip "kite" sur la scène
Étape 4 - Ajouter des boutons
  • Retournez à la scène
  • Nous utilisons deux boutons
  • Chacun de ces boutons a un nom d'instance: stopBtn et goBtn

Étape 5 - Ajoutez le code JavaScript

  • Au début, on arrête le clip avec this.kite.stop();. Sinon le clip pour le cerf-volant sera automatiquement démarré.
  • Un clic sur le goBtn lancera la fonction startIt lorsque l'utilisateur clique dessus. Cette fonction va alors exécuter this.kite.play ().
  • Le bouton stopBtn est programmé de la même manière.
// Stop the kite clip from running
this.kite.stop();

// registers the startIt function to be called when user clicks on goBtn
this.goBtn.addEventListener("click", startIt.bind(this));

function startIt()
{
	// Start the kite clip
	// uncomment following line for debugging
	console.log ("goBtn pressed" + ", kite=" + this.kite);
	this.kite.play();
}

// registers the stopIt function to be called when user clicks on stopBtn
this.stopBtn.addEventListener("click", stopIt.bind(this));

function stopIt()
{
	// Stop the kite clip
	// console.log ("goBtn pressed");
	this.kite.stop();
}
Exemple
kite-movie-html.html
Source: kite-movie-html.fla
Répertoire: http://tecfa.unige.ch/guides/flash/cc-html5/embedded-movie-clips/
Notice: Il existe aussi une version Flash.

Exercice: Ajouter une autre animation clip. Par exemple un alien volant.

Exemple Perroquets

  • Dans cet exemple, on crée 3 instances du même clip.
  • Ensuite pour lancer les animations, on transforme chacun en bouton. Donc en cliquant sur un peroquet on le reveille.
3 clips perroquets

Le clip perroquet a trois animations de mouvement, c'est-à-dire 2 rotations pour la bouche et une pour la queue

3 clips perroquets

Ces animations sont déclenchés par des clics sur les instances. On utilise deux méthodes différentes.

Fichiers:

Sources clip art sur OpenClipart.org

Exemple avion avec 2-3 niveaux d'imbrication de symboles

Le principe est simple: On crée une bibliothèque de clips animés. Ensuite on peut combiner de différentes manières. Par exemple: (a) créer des bouts d'animation, (b) créer des clips qui les utilisent, (c) créer une instance dans la timeline.

Exemple:

  • Clip A = Dessin hélice
  • Clip B = Dessin avion
  • Clip C = Clip hélice qui tourne
  • Clip D = Avion qui contient B et 2 fois C
  • Clip E = Animation avion qui bouge et qui contient deux fois D

Sources:

Aide à la programmation avec les code snippets

Animate CC dispose d'une aide pour programmer les interactions selon le langage employé. On peut accéder à ces aides depuis le menu Window > Code Snippets.

Pour illustrer ces aides, nous allons arrêter une animation à un frame :

  1. Positionez-vous au frame où vous souhaitez arrêter l'animation
  2. Puisque nous concevons une animation en HTML5/JS, aller sur le menu HTML5 Canvas > Timeline Navigation > Stop at this frame.

Créer des instances de clip avec JavaScript

Je ne sais pas s'il existe un mécanisme similaire à celui de ActionScript (voir Utilisation d'un clip de la library dans AS3 - Survol du langage ActionScript)

En attendant que je trouve une solution plus élégante, voici une procédure qui marche:

En résumé:

  • Placez une instance sur la scène (Angl stage) et mettez la en dehors de la plage d'affichage. Cela force Flash à exporter le symbole en tant que classe, lorsqu'il génère le code JavaScript pour CreateJs. Mais attention, ne rendez pas l'objet invisible car il ne sera pas exporté. Je répète, évitez this.myInstance.visible = false;. A mon avis il s'agit d'un bug.
  • Ensuite dans le code ActionScript, vous trouvez la classe à instancier comme propriété de la variable lib
var newObj = new lib.myClip();
par exemple
var personne = new Joe();

Dans l'exemple suivant, on stocke le résultat - une nouvelle instance de lib.Parrot_Clip - dans une propriété de this.

this.newBird = new lib.Parrot_Clip(); 

Exemple générateur de Perroquets (cliquer sur la branche):

// Clipart
// Parrot: https://openclipart.org/detail/193812/parrot-remix
// Branch: https://openclipart.org/detail/190243/doves-on-a-branch-for-v-day

// It seems that library objects cannot be exported.
// I therefore created an instance and had a look at the JS code.
this.Joe.visible = false;

this.createBtn.addEventListener("click", createBird.bind(this));

var counter = 1;

function createBird(ev)
{
	//Notice the lib.something for creating an instance !!
        this.newBird = new lib.Parrot_Clip();
	// position the thing
	this.newBird.x = 180 + counter * 30;
	this.newBird.y = 60 + counter * 8;
	// add an event handler for hiding
	this.newBird.on ("click", hideBird)
	// add it to the stage
	stage.addChild(this.newBird);
	
	//console.log ("newBird=" + this.newBird + " at x=" + this.newBird.x);

	counter++;
}

function hideBird ()
{
	this.visible = false;
}

Remerciement et modification du copyright