« Flash CS5 - Vidéos augmentées » : différence entre les versions

De EduTech Wiki
Aller à la navigation Aller à la recherche
mAucun résumé des modifications
m (Remplacement de texte — « <pageby nominor="false" comments="false"/> » par « <!-- <pageby nominor="false" comments="false"/> --> »)
 
(67 versions intermédiaires par 10 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{Incomplet}}
{{Incomplet}}
(traduction assistée par Google d'un tutoriel fait pour CS3 !, à compléter ....)


{{Tutoriels Flash|CS3/CS4/CS5|débutant}}
{{Tutoriels Flash|CS3/CS4/CS5|débutant}}
<pageby nominor="false" comments="false"/>
<!-- <pageby nominor="false" comments="false"/> -->


== Introduction ==
== Introduction ==
Ligne 18 : Ligne 19 :
* [[Flash CS3 - Créer et modifier les calques et les images]]
* [[Flash CS3 - Créer et modifier les calques et les images]]
* [[Flash CS4 - Composants]]
* [[Flash CS4 - Composants]]
* [[Flash CS4 - Composant bouton]]
* [[Flash CS5 - Composant bouton]] ([[Flash CS4 - Composant bouton|CS4]])
* [[Flash CS4 - Composants videos]]
* [[Flash CS4 - Composants videos]] ('''Important''')


'''Matériel (fichiers *.fla à manipuler)'''  
'''Matériel (fichiers *.fla à manipuler)'''  


* [http://tecfa.unige.ch/guides/flash/ex/component-video-intro/ component-video-intro/] (répertoire avec des exemples CS3)
* [http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/ component-video-intro/] (répertoire avec des exemples CS3)


'''Qualité et niveau'''
'''Qualité et niveau'''
Ligne 41 : Ligne 42 :
== Cue Points ==
== Cue Points ==


{{quotation|Cue points cause the video playback to start other actions within the presentation. For example, you can create a Flash presentation that has video playing in one area of the screen while text and graphics appear in another area. A cue point placed in the video starts an update to the text and graphic, while they remain relevant to the content of the video. (Adobe CS3 Video Encode Help, sept. 2007)}}
Les points de repère (cue points) identifient des endroits précis d'une vidéo. Ces "cue points" permettent de déclencher des événements ou encore d'implémenter une navigation plus rapide.


Les points de repère (cue points) identifient des endroits précis d'une vidéo. Ces "cue points" permettent de déclencher des événements ou encore une navigation rapide dans la vidéo.
Il existe plusieurs façons d'ajouter des points de repère.


Il ya plusieurs façons d'ajouter des points de repère.
'''(1) Ajout de points de repère dans l'encodeur vidéo (Flash/Adobe Media Encoder):'''


; (1) Ajout de points de repères dans l'encodeur vidéo (Flash/Adobe Media Encoder). Ces repères seront intégrés dans la vidéo et seront donc aussi accessibles à d'autres programmes que Flash.
Ces repères seront intégrés dans la vidéo et seront donc aussi accessibles à d'autres programmes.


* Sélectionnez l'onglet Cue Points
* Ouvrez un fichier vidéo dans l'encodeur.
* Glissez en avant et en arrière la tête de lecture vidéo pour sélectionner les positions qui auront un point de repère.
* Sélectionnez l'onglet Cue Points (ou cliquez sur le bouton settings dans la version CS5).
* Glissez la tête de lecture vidéo en avant et en arrière pour identifier et sélectionnez les positions qui auront un point de repère.
* Cliquez sur le + pour ajouter un nouveau point de repère.
* Cliquez sur le + pour ajouter un nouveau point de repère.
* Les event cue point sont utilisés pour déclencher des méthodes ActionScript lorsque le point de repère est atteint, et vous permettent de synchroniser la lecture vidéo avec d'autres événements dans la présentation Flash.  
* Les '''event cue points''' sont utilisés pour déclencher des méthodes ActionScript lorsqu'un point de repère est atteint, et vous permettent de synchroniser la lecture vidéo avec d'autres événements dans la présentation Flash.  
* '''points de repère de navigation'''  sont utilisés pour la navigation et la recherche.
* Les points de repère de '''navigation'''  sont utilisés pour la navigation et la recherche.


La différence entre ces deux types de points de repère ne sont que manifeste si vous utilisez des points de repère pour chercher quelque chose. par exemple pour déclencher des animations à partir des points de repère, il n'a pas d'importance si le point de repère est de type "événement", "navigation" ou "actionscript". Toutefois, si vous recherchez un point de repère, il y aura une différence.
La différence entre ces deux types de points de repère n'est que manifeste si vous utilisez des points de repère pour chercher quelque chose. Pour déclencher des animations à partir de points de repère, il n'y a pas d'importance si le point de repère est de type "événement", "navigation" ou "actionscript". Par contre, si vous recherchez un point de repère, il y aura une différence.


[[File:cs3-video-encoder.jpg|thumb|600px|none|Adobe CS3 Video Encoder Points Cue]]
[[File:cs3-video-encoder.jpg|thumb|600px|none|Adobe CS3 Video Encoder Points Cue]]


Chaque point de repère est constitué d'un nom, d'un type et du temps où il est inséré. Dans la suite, nous pouvons récupérer ces informations en Flash comme on l'expliquera ci-dessous.
Chaque point de repère est constitué d'un nom, d'un type et du moment où il est inséré. Dans la suite, nous pouvons récupérer ces informations en Flash comme on l'expliquera ci-dessous.
Quoi qu'il en soit, je suggère plutôt d'ajouter des points de repère avec du code ActionScript ou encore avec le properties panel de CS5, car vous pouvez dans la suite facilement et rapidement ajouter / supprimer des points de repère sans devoir re-encoder le film.
Quoi qu'il en soit, on suggère plutôt d'ajouter des points de repère avec du code ActionScript ou encore avec le panneau ''properties'' de CS5, car vous pouvez par la suite facilement et rapidement ajouter / supprimer des points de repère sans devoir re-encoder le film.


; (2) Ajouter des Cue points "ActionScript" avec l'inspecteur des composants
; (2) Ajouter des Cue Points "ActionScript" avec le ''properties panel'' (ou l'inspecteur des composants)
* Grâce à des paramètres du composant FLVPlayback, à savoir ouvrir le paramètre ou le panneau de l'inspecteur des composants (voir ci-dessous). Je recommande cette méthode pour les débutants.
* Sélectionnez l'instance FLVPlayback sur la scène. Ensuite, vous pouvez ajouter des Cue Points dans le properties panel (vers le bas). Positionnez d'abord la tête de lecture de la vidéo au bon endroit (CS5). Je recommande cette méthode pour les débutants.


; (3) Ajouter des points "ActionScript" de repère avec ActionScript
; (3) Ajouter des points "ActionScript" de repère avec ActionScript
Ligne 69 : Ligne 71 :
   video_component.addASCuePoint (10.5, "wonder");
   video_component.addASCuePoint (10.5, "wonder");


{0}video_component{/0} est le nom que vous avez donné à l'instance du composant
''video_component'' est le nom que vous avez donné à l'instance du composant, ''10.5'' est le temps du Cue Point, et ''wonder'' est le mot donné au Cue Point.


L'avantage de la méthode ActionScript est que vous pouvez facilement modifier ces points de repère lorsque des ajustements sont nécessaires. Par exemple, vous remarquerez peut-être à un moment donné que votre fichier vidéo est trop grand et vous désirez le raccourcir. C'est '''beaucoup plus'''  rapide de faire une modification dans le properties panel ou dans le code ActionScript
L'avantage de la méthode ActionScript est que vous pouvez facilement modifier ces points de repère lorsque des ajustements sont nécessaires. Par exemple, vous remarquerez à un moment donné que votre fichier vidéo est trop grand et vous désirez le raccourcir. C'est '''beaucoup plus'''  rapide de faire une modification dans le properties panel ou dans le code ActionScript.


L'inconvénient est que certaines méthodes faites pour les points de repère de type ''navigation''  ne fonctionnent pas.
L'inconvénient est que certaines méthodes faites pour les points de repère de type ''navigation''  ne fonctionnent pas.


== Utilisation de sous-titres (captions) ==
Un sous-titre ou '''légende''' (Angl. Caption) est un texte qui est affiché dynamiquement pendant que la vidéo est en lecture. Les légendes peuvent avoir plusieurs objectifs, par exemple:
* aider les personnes ayant une déficience auditive
* permettre à des utilisateurs de regarder des vidéos sans faire de bruit
* mettre l'accent sur des passages importants, ou paraphraser ou commenter ....
Pour utiliser des captions (légendes), vous devez faire trois choses:
(1) Utilisez un "skin" pour le composant de lecture qui comprend un bouton légende, par exemple ''SkinUnderAllNoFullscreen.swf.'' (recommandé, mais pas obligatoire). Alternativement, glissez-déposez le composant "caption button" dans la scène.
(2) Glissez le composant '''FLVPlaybackCaptioning ''' sur la scène (en plus du composant FLVPlayback). L'endroit n'est pas important, il faut juste mettre l'instance quelque part dans le workspace ...


(3) Encodez les "captions" dans un fichier XML en format '''Timed Text''' (voir ci-dessous). Ce fichier XML doit ensuite être enregistré auprès du composant FLVPlaybackCaptioning. Une manière de l'enregistrer est d'écrire le chemin du fichier dans la case "source" des paramètres des composants, sur l'onglet des propriétés de l'objet.


== Utilisation de sous-titres (captions) ==
Pour importer la vidéo, utilisez la même procédure que celle décrite dans [[Flash CS4 - Composants videos]]. A la différence de CS4, CS5 permet de prévisionner la vidéo déjà dans CS5. Donc il est devenu plus facile de définir les repères.


Un sous-titre ou '''légende'''  (Angl. Caption) est un texte qui est affichée dynamiquement pendant que la vidéo est en lecture. Les légendes ont plusieurs objectifs:
Si vous avez importé votre vidéo avec ActionScript, vous pouvez également ajouter les sous-titres avec le code suivant:
* Vous pouvez déployer des vidéos pour les personnes ayant une déficience auditive
* Les utilisateurs peuvent regarder des vidéos sans faire de bruit
* Vous pouvez mettre l'accent sur les passages importants, ou de paraphraser ou commenter les voix.


Pour utiliser des captions (légendes), vous devez faire trois choses:
<source lang="actionscript">
* Utilisez une enveloppe pour le composant de lecture qui comprend un bouton Légende, par exemple ''SkinUnderAllNoFullscreen.swf.''
//définir une variable de sous-titres
* Glissez le composant '''FLVPlaybackCaptioning '''  sur la scène (en plus du composant FLVPlayback). L'endroit n'est pas important, il faut juste le mettre un instance quelque part.
var my_Caption = new FLVPlaybackCaptioning();
* Encodez les "captions" dans un fichier XML. Ce fichier XML doit ensuite être enregistré auprès du composant FLVPlaybackCaptioning.


Pour importer la vidéo, utilisez la même procédure que celle décrite dans [[Flash CS4 - Composants videos]].
//ajouter une instance sur la scène
addChild (my_Caption);


A la différence de CS4, CS5 permet de prévisionner la vidéo déjà dans CS5. Donc il est devenu plus facile de définir les repères.
//lier la source des sous-titres
my_Caption.source = "fichierdesoustitres.xml";


=== La composante sous-titrer avec Timed Text ===
//rendre les sous-titres visibles
my_Caption.showCaptions = true;
</source>


; La norme XML Timed Text et
Vous pouvez, seulement si vous voulez, créer un bouton qui activera/désactivera les sous-titres grâce au code suivant:
Si vous n'êtes pas familier avec le langage XML, vous pouvez jeter un coup d'œil sur l'article [[Extensible Markup Language|XML]] et peut-être la DTD tutoriel. Ensuite, nous suggérons de travailler avec un [[Éditeur XML|éditeur XML,]] pour s'assurer que votre fichier soit bien formé. Nous recommendons Exchanger XML Lite.
<source lang="actionscript">
Si vous n'avez pas envie d'apprendre XML, essayez de suivre exactement le modèle décrit ci-dessous. Une balise manquante ou une erreur de syntaxe comme le manque d'un ">" fera échouer votre animation
//on définit un bouton et on le rend attentif au clic
btn_soustitres.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
//on définit la fonction
function fl_MouseClickHandler(event:MouseEvent):void {
// on utilise le commutateur pour intervertir les deux valeurs de la variable à chaque clic
switch(Caption.showCaptions)
{case true : Caption.showCaptions = false;
break;
case false : Caption.showCaptions = true;
break;}
}
</source>


Flash ne prend pas en charge la spécification Timed Text complète (voir le [[http://help.adobe.com/fr_FR/as3/components/WS5b3ccc516d4fbf351e63e3d118a9c65b32-7fec.html manuel]]). Pour ceux qui sont familiers avec le langage XML, j'ai écrit un peu DTD qui permet l'édition. Il suffit de le saisir par l'article Timed Text et également copier / coller le modèle XML.
=== Le Timed Text ===


Note: Timed Text est définie avec un schéma XML, complexe mais comme Adobe Flash implémente uniquement un sous-ensemble, cela ne vaut pas la peine de l'utiliser.
Si vous n'êtes pas familier avec le langage XML, vous pouvez jeter un coup d'œil sur les articles [[XML]] et peut-être le [[tutoriel DTD]]. Ensuite, nous suggérons de travailler avec un [[:en:XML editor|éditeur XML]], pour s'assurer que votre fichier est bien formé. Nous recommandons Exchanger XML Lite.
Si vous n'avez pas envie d'apprendre XML, essayez de suivre exactement le modèle décrit ci-dessous. Une balise manquante ou une erreur de syntaxe comme le manque d'un ">" fera échouer votre animation


; Comprendre le temps des légendes
Flash ne prend pas en charge la spécification Timed Text complète (voir le [[http://help.adobe.com/fr_FR/as3/components/WS5b3ccc516d4fbf351e63e3d118a9c65b32-7fec.html manuel]]). Les utilisateurs familiers avec le langage XML peuvent copier une  petite DTD de l'article [[:en:Timed Text]]. La norme Timed Text est définie avec un schéma XML complexe, mais comme Adobe Flash implémente uniquement un sous-ensemble, cela ne vaut pas la peine de l'utiliser.
Pour créer ce fichier XML, vous devez savoir quelle légende (sous-titre/caption) insérer à quel moment et pendant combien de temps. Pour CS3 et CS4 vous devez visionner le film avec un lecteur vidéo externe. Adobe Media Player affiche le temps et d'autres clients *.flv video aussi.
* Get [http://get.adobe.com/amp/ Adobe Media Player] . Il est gratuit.
* Sous Ubuntu, le lecteur Totem fonctionne bien.  


En CS5, il n'est pas nécessaire d'utiliser un lecteur vidéo externe, vous pouvez visionner la vidéo dans l'outil CS5, enfin si vous ouvrez un ancien fichier CS3/CS4, il faut quand-même remplacer les 2 composants vidéo.
Pour créer ce fichier XML, vous devez savoir quelle légende (sous-titre/caption) insérer à quel moment et pendant combien de temps. Pour CS3 et CS4 vous devez visionner le film avec un lecteur vidéo externe. [http://get.adobe.com/amp/  Adobe Media Player] (gratuit) affiche le temps et d'autres clients *.flv video aussi. Sous Ubuntu, le lecteur Totem fonctionne bien.  


 
En CS5, il n'est pas nécessaire d'utiliser un lecteur vidéo externe, vous pouvez visionner la vidéo dans l'outil CS5. Ceci dit, si vous ouvrez un ancien fichier CS3/CS4, il va falloir remplacer les 2 composants vidéo.
*
*
*


; Un exemple de fichier XML avec sous-titrage minimaliste
; Exemple de fichier XML avec un sous-titrage minimaliste


Nous suggérons d'entrer au moins les données suivantes. Pour chaque sous-titre (caption) entrez:
Nous suggérons d'entrer au moins les données suivantes. Pour chaque sous-titre (caption) entrez:
* Un <nowiki>'''''<p>.''' '' </nowiki> Chaque «p» devrait inclure:
* Un '''<nowiki><p></nowiki>''' Chaque «p» devrait inclure:
* '''''un''' ''  attribut begin qui définit quand la légende doit apparaître,
* un attribut ''begin'' qui définit quand la légende doit apparaître,
* un attribut '''''dur'' '''  qui définit combien de temps elle restera à l'écran.
* un attribut ''dur'' qui définit combien de temps elle restera à l'écran.


Le temps est en secondes, mais on peut également utiliser un format plus complexe, comme
Le temps est indiqué en secondes, mais on peut également utiliser un format plus complexe, comme
  02:30.5
  02:30.5
qui veut dire 2 minutes, 30 secondes et demi.
qui veut dire 2 minutes, 30 secondes et demie.


Voici le fichier que nous avons appelé timed-text.xml et que nous avons utilisé dans cet exemple
Voici le fichier que nous avons appelé timed-text.xml et que nous avons utilisé dans cet exemple
lang="actionscript"> <source
<source lang="actionscript">
<?xml version = "1.0" encoding = "UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<Tt xml: lang = "fr" xmlns = "http://www.w3.org/2006/04/ttaf1"
<tt xml:lang="en" xmlns="http://www.w3.org/2006/04/ttaf1"
xmlns: tts = "# http://www.w3.org/2006/04/ttaf1 style">
    xmlns:tts="http://www.w3.org/2006/04/ttaf1#styling">
<head>
  <head>
<styling>
    <styling>
<Style />
    </styling>
</ Head>
  </head>
<body>
  <body>
xml:lang="en"> <div
  <div xml:lang="en">
<p>Daniel's Office</p>
      <p begin="1" dur="4">Daniel´s Office</p>
<p>Mon Palm Tree (à partir de New York)</p>
      <p begin="5" dur="5">My Palm Tree (from NYC)</p>
<p>Ma bibliothèque</p>
      <p begin="11" dur="7">My Bookshelf</p>
<p>Mon préféré Flash Drawing Book</p>
      <p begin="18" dur="5">My favorite Flash Drawing Book</p>
<p>Mon ordinateur portable DELL XPS Flash machine</p>
      <p begin="25" dur="5">My DELL XPS Laptop Flash machine</p>
<p>Mon poste de travail Linux Ubuntu</p>
      <p begin="30" dur="5">My Ubuntu Linux workstation</p>
<p>dur travail sur Didacticiels Flash à l'aide de l'éditeur Xemacs</p>
      <p begin="33" dur="5">Working hard on Flash Tutorials using the Xemacs Editor</p>
<p>L'extérieur (pas mon vélo)</p>
      <p begin="42" dur="5">The outside (not my bike)</p>
    </div>
</ Body>
  </body>
</tt>
</source>
 
Note: Les légendes peuvent se chevaucher, c'est à dire Flash affichera une nouvelle légende sur une nouvelle ligne si la précédente est toujours en cours d'être affichée. Vous pouvez le voir dans l'exemple que nous présentons dans la section suivante.


</ Source>
Pour l'instant, prenez le modèle ci-dessous et ajoutez des balises "p".  Assurez-vous que les balises sont fermées comme dans l'exemple ci-dessus. Remplacer "Let's start" par votre propre légende, bien sûr.


Note: Les légendes peuvent se chevaucher, c'est à dire Flash affiche une nouvelle légende sur une nouvelle ligne si la précédente est toujours en cours d'être affichée. Vous pouvez le voir dans l'exemple que nous présentons dans la section suivante.
<source lang="actionscript">
<?xml version="1.0" encoding="UTF-8"?>
<tt xml:lang="en" xmlns="http://www.w3.org/2006/04/ttaf1"
    xmlns:tts="http://www.w3.org/2006/04/ttaf1#styling">
  <head><styling></styling></head>
  <body>
  <div xml:lang="en">
      <p begin="1" dur="4">Let´s start</p>


Pour l'instant, prenez le modèle ci-dessous et ajoutez des balises "p", assurez-vous de les fermer comme dans l'exemple ci-dessus. Remplacer "Let's start" par votre propre légende, bien sûr.
    </div>
lang="actionscript"> <source
  </body>
<?xml version = "1.0" encoding = "UTF-8"?>
</tt>
<Tt xml: lang = "fr" xmlns = "http://www.w3.org/2006/04/ttaf1"
</source>
xmlns: tts = "# http://www.w3.org/2006/04/ttaf1 style">
<head> <styling> </ style> </ head>
<body>
xml:lang="en"> <div
<p>Commençons</p>


L'exemple ci-dessous explique comment afficher plusieurs lignes de sous-titres en même temps et comment les faire apparaître ensemble ou l'une après l'autre. Pour cela, il suffit simplement de modifier le timing des balises ''begin'' et ''dur''. Essayez de copier le code suivant dans votre fichier timed-text.xml:
</ Body>


</ Source>
<source lang="actionscript">
<?xml version="1.0" encoding="UTF-8"?>
<tt xml:lang="en" xmlns="http://www.w3.org/2006/04/ttaf1"
    xmlns:tts="http://www.w3.org/2006/04/ttaf1#styling">
  <head><styling></styling></head>
  <body>
  <div xml:lang="en">
  <p begin="04" dur="8">Voici un essai avec une double ligne de sous-titres. La seconde ligne apparaîtra dans 4 secondes</p>
  <p begin="08" dur="4">Ceci est la seconde ligne de sous-titres. Ces deux lignes disparaîtront ensemble, au même moment.</p>
  <p begin="16" dur="4">Ces deux lignes apparaissent simultanément.</p>
  <p begin="16" dur="6">Mais cette seconde ligne restera affichée 2 secondes de plus que la première.</p>
    </div>
  </body>
</tt>
</source>


; Utilisation du composant FLVPlaybackCaptioning
; Utilisation du composant FLVPlaybackCaptioning


* Créez un nouveau calque et nommez le "Légende" ou quelque chose comme ça. Allez-y.
* Créez un nouveau calque et nommez-le "Légende" ou quelque chose comme ça. Allez-y.
* Ensuite, glissez le FLVPlaybackCaptioning quelque part sur l'espace de travail ou même la scène.
* Ensuite, glissez le FLVPlaybackCaptioning quelque part sur l'espace de travail ou même la scène.
* Contrairement au composant playback, ce composant ne sera pas affiché, il peut donc être n'importe .
* Contrairement au composant playback, ce composant ne sera pas affiché, il peut donc être placé à n'importe quel endroit.


; Personnalisation du composant
; Personnalisation du composant
: Cliquez sur le composant et modifiez les paramètres dans le panneau "properties". puis
: Cliquez sur le composant et modifiez les paramètres dans le panneau "properties" (CS4/CS5), puis donnez la valeur ''true'' pour ''showCaptions''  si vous souhaitez que tous les utilisateurs voient les légendes (probablement la plupart des utilisateurs ne savent pas comment les activer ou désactiver)
:: donnez la valeur true pour ''showCaptions''  si vous souhaitez que tous les utilisateurs voyent les légendes (probablement la plupart des utilisateurs ne savent pas comment les activer ou désactiver)
: Précisez la ''source''  du fichier XML TimedText à télécharger.  
::: précisez la ''source''  du fichier XML TimedText à télécharger. Donc, créez le fichier xml maintenant ....  
 
Donc, créez le fichier xml maintenant ....  
 
Ensuite réglez les paramètres. L'interface est différent selon la version de Flash, voir les copies d'écran ci-dessous.
 
[[File:flash-cs3-video-captions.png|thumb|600px|none|Le composant FLVPlayback de CS3 - Paramètres du sous-titrage ]]


[[File:flash-cs3-video-captions.png|thumb|600px|none|Le composant FLVPlayback sous-titrage et ses paramètres]]
[[File:flvplaybackcaptioning-params-2-cs5.png|thumb|600px|none|Le composant FLVPlayback de CS4/CS5 - Paramètres du sous-titrage ]]


; L'exemple
=== Exemple simple sous-titres avec timed text ===
*[http://tecfa.unige.ch/guides/flash/ex/component-video-intro/flash-cs3-video-simple-server-caption.html flash-cs5-video-simple-server-caption.html]
Le code de cet exemple a été décrit ci-dessus)
* [http://tecfa.unige.ch/guides/flash/ex/component-video-intro/flash-cs3-video-simple-server-caption.fla flash-cs5-video-simple-server-caption.fla]
 
* fichier XML: [http://tecfa.unige.ch/guides/flash/ex/component-video-intro/timed-text.xml timed-text.xml]
*[http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/flash-cs5-video-simple-server-caption.html flash-cs5-video-simple-server-caption.html]
* [http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/flash-cs5-video-simple-server-caption.fla flash-cs5-video-simple-server-caption.fla]
* fichier XML: [http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/timed-text.xml timed-text.xml]
* fichier Video [http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/office-dks3.flv office-dks.flv]
* Répertoire: http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/
* Répertoire: http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/


Ligne 198 : Ligne 245 :
* Créez un calque pour les sous-titres si vous n'en possédez pas déjà un
* Créez un calque pour les sous-titres si vous n'en possédez pas déjà un
* Dessinez une zone de texte
* Dessinez une zone de texte
** Donnez-lui le nom d'instance '''caption_box'''  
*# Donnez-lui le nom d'instance comme '''caption_box''' ou '''affichage''' etc.
** Sélectionnez la taille de police, la couleur etc
*# Sélectionnez la taille de police, la couleur etc
** Sélectionnez Multiligne
*# Sélectionnez Multiligne
** Choisissez texte dynamique (si elle ne l'est pas)
*# Choisissez texte dynamique (si elle ne l'est pas)


; Étape 2 - Configurez le composant
; Étape 2 - Configurez le composant
Dites à la composante de sous-titrage d'utiliser la zone de texte que vous venez de définir:
Dites à la composante de sous-titrage d'utiliser la zone de texte que vous venez de définir:
* Ouvrez le panneau "properties" et cliquez sur la composante FLVPlaybackCaptioning
* Ouvrez le panneau "properties" et cliquez sur la composante FLVPlaybackCaptioning
* captionTarget Set = caption_box
* captionTarget = caption_box (ou affichage, c.a.d. le nom de votre boite de texte !)
* autoLayout Set = false
* autoLayout = false (!!!)
 
[[File:flvplaybackcaptioning-params-cs5.png|thumb|600px|none|Le composant FLVPlayback de CS4/CS5 - Parametrage avancé du sous-titrage]]


; Étape 3 - Ajoutez un peu de style au fichier XML
; Étape 3 - Ajoutez un peu de style au fichier XML
Il suffit de regarder cet exemple (fichier Timed-text2.xml). Les balises de style ne fonctionnent pas comme en HTML !   
Il suffit de regarder cet exemple (fichier Timed-text2.xml). Les balises de style ne fonctionnent pas comme en HTML !   


Si quelque chose n'est pas clair, téléchargez le [http://tecfa.unige.ch/guides/flash/ex/component-video-intro/flash-cs3-video-simple-server-caption2.fla fla *.] fichier et regardez-le. Vérifiez que les deux composants videos sont ok et que tous les fichiers se trouvent dans votre ordinateur ou le serveur (y compris la peau *.swf, la video *.flv. et le fichier *.xml) et dans le même répertoire. N'oubliez pas de copier la peau!
Si quelque chose n'est pas clair, téléchargez le fichier [http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/flash-cs5-video-simple-server-caption2.fla fla *.] et regardez-le. Vérifiez que les deux composants videos sont ok et que tous les fichiers se trouvent dans votre ordinateur ou le serveur (y compris la peau *.swf, la video *.flv. et le fichier *.xml) et dans le même répertoire. N'oubliez pas de copier la peau!
 
lang="actionscript"> <source
<?xml version = "1.0" encoding = "UTF-8"?>
<!tt DOCTYPE SYSTEM "mini-tt.dtd">
<Tt xml: lang = "fr" xmlns = "http://www.w3.org/2006/04/ttaf1"
xmlns: tts = "# http://www.w3.org/2006/04/ttaf1 style">
<head>
<styling>
<style id="title" tts:backgroundColor="transparent" tts:color="red" tts:fontSize="24"/>
<Style />
</ Head>
<body>
xml:lang="en"> <div
<p>Daniel's Office</p>
<p>Mon Palm Tree (à partir de New York)</p>
<p>Livres</p>
<p>Ma bibliothèque</p>
<p>Mon préféré Flash Dessin <span tts:color="red"> livre</p>
<p>Ordinateur</p>
<p>Mon ordinateur portable DELL XPS Flash machine</p>
<p>My
tts:backgroundColor="yellow" <span tts:color="black">
Ubuntu Linux station de travail
</p>
<p>
tts:backgroundColor="transparent"> <span
dur travail sur Didacticiels Flash à l'aide de l'éditeur Xemacs
</p>
<p>L'extérieur (pas mon vélo)</p>
</ Body>


</ Source>
<source lang="actionscript">
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tt SYSTEM "mini-tt.dtd">
<tt xml:lang="en" xmlns="http://www.w3.org/2006/04/ttaf1"
    xmlns:tts="http://www.w3.org/2006/04/ttaf1#styling">
  <head>
    <styling>
      <style id="title" tts:backgroundColor="transparent" tts:color="red" tts:fontSize="24"/>
    </styling>
  </head>
  <body>
  <div xml:lang="en">
      <p begin="0" dur="9" style="title">Daniel´s Office</p>
      <p begin="5" dur="4">My Palm Tree (from NYC)</p>
      <p begin="10" dur="13" style="title">Books ....</p>
      <p begin="11" dur="7">My Bookshelf</p>
      <p begin="18" dur="5">My favorite Flash Drawing <span tts:color="red">Book</span></p>
      <p begin="24" dur="16" style="title">Computers ....</p>
      <p begin="25" dur="5">My DELL XPS Laptop Flash machine</p>
      <p begin="30" dur="5">My
        <span tts:backgroundColor="yellow" tts:color="black">
        Ubuntu Linux workstation</span>
      </p>
      <p begin="35" dur="5">
        <span tts:backgroundColor="transparent"></span>
        Working hard on Flash Tutorials using the Xemacs Editor
      </p>
      <p begin="40" dur="4">The outside (not my bike)</p>
    </div>
  </body>
</tt>
</source>


; Le résultat
; Le résultat
*[http://tecfa.unige.ch/guides/flash/ex/component-video-intro/flash-cs3-video-simple-server-caption2.html flash-cs3-video-simple-server-caption2.html]
*[http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/flash-cs5-video-simple-server-caption2.html flash-cs5-video-simple-server-caption2.html]
* Source: [http://tecfa.unige.ch/guides/flash/ex/component-video-intro/flash-cs3-video-simple-server-caption2.fla flash-cs3-video-simple-server-caption2.fla]
* Source: [http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/flash-cs5-video-simple-server-caption2.fla flash-cs5-video-simple-server-caption2.fla]
* fichier XML: [http://tecfa.unige.ch/guides/flash/ex/component-video-intro/timed-text2.xml timed-text2.xml]
* fichier XML: [http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/timed-text2.xml timed-text2.xml]
* Répertoire: http://tecfa.unige.ch/guides/flash/ex/component-video-intro/
* Répertoire: http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/


=== Ajout de légendes avec des Cuepoints ===
=== Ajout de légendes avec des Cuepoints ===


Il existe une méthode alternative. C.f. le [http://help.adobe.com/fr_FR/as3/components/WS5b3ccc516d4fbf351e63e3d118a9c65b32-7ee4.html manuel Adobe]. C'est pas plus facile, plutôt le contraire...
Il existe une méthode alternative. C.f. le [http://help.adobe.com/fr_FR/as3/components/WS5b3ccc516d4fbf351e63e3d118a9c65b32-7ee4.html manuel Adobe]. Ce n'est pas plus facile, plutôt le contraire...
 
Le principe est simple. Le concept des cue points sera expliqué plus loin dans ce texte. On peut utiliser ces cue points pour modifier un texte dynamique.


== Importation d'une vidéo sur la timeline ==
== Importation d'une vidéo sur la timeline ==


Maintenant, nous allons examiner une façon très différente de l'utilisation de vidéos. Au lieu d'utiliser le composant "appareil de lecture" nous allons inclure la vidéo dans la timeline (chaque image vidéo sera une image).
Maintenant, nous allons examiner une façon très différente de l'utilisation de vidéos. Au lieu d'utiliser le composant "appareil de lecture" nous allons inclure la vidéo dans la timeline (chaque image vidéo sera une image).
Cette méthode nous permettra de créer des vidéos avec des animations augmentée d'une façon très simple.
Cette méthode nous permettra de créer des vidéos avec des animations augmentées d'une façon très simple.


=== Intégrer dans la timeline ===
=== Intégrer une vidéo dans la timeline ===


Si vous intégrez une vidéo dans la timeline, vous n'avez plus besoin du composant vidéo. Mais attention: Utilisez seulement cette technique, si votre vidéo est à la fois courte et petite (mauvaise qualité), sinon le fichier Flash va exploser. Une vidéo de qqs. minutes peut devenir facilement un fichier Flash de 100MB, car il contiendra littéralement la vidéo sous forme d'image par image.
Si vous intégrez une vidéo dans la timeline, vous n'avez plus besoin du composant vidéo. Mais attention: Utilisez seulement cette technique si votre vidéo est à la fois courte et petite (mauvaise qualité), sinon le fichier Flash va exploser. Une vidéo de qqs. minutes peut devenir facilement un fichier Flash de 100MB, car la vidéo comprimée sera remplacée par une animation image par image.  


Les vidéo embarqués créeront une timeline (chronologie) très longue, mais vous pouvez choisir de lui laisser sa propre timeline. Quoi qu'il en soit, dans cet exemple, nous avons pris l'option «centaines d'image" ....
Par exemple, une vidéo qui dure 1 minute sera traduite en 60 X 24 images = 1440 images ! Les vidéos embarquées créeront une timeline (chronologie) très longue, mais vous pouvez choisir de lui laisser sa propre timeline. Quoi qu'il en soit, dans cet exemple, nous avons pris l'option «centaines d'images" ....


Nous allons insérer la vidéo dans l'image n ° 2. Nous allons également ajouter un bouton de lecture qui va sauter à l'image 2 et jouer la vidéo.
Nous allons insérer la vidéo dans l'image n°2. Nous allons également ajouter un bouton de lecture qui va sauter à l'image 2 et jouer la vidéo.


; Étape 1 - fichiers FLV
; Étape 1 - fichiers FLV
* Prenez une vidéo.
* Créez une petite vidéo (max. 1 minute, petit format).


; Étape 2 - Importez la vidéo comme "embed"
; Étape 2 - Importez la vidéo comme "embed"
* Créez un nouveau calque et nommez le "vidéo"
* Créez un nouveau calque et nommez-le "vidéo"
* Insérez une nouvelle image-clé vide dans le châssis 2 (puisque nous ne voulons pas le jeu vidéo sur la charge dans ce cas).
* Insérez une nouvelle image-clé vide dans l'image 2 (puisque nous ne voulons pas que la la vidéo soit affichée dès le départ).
* Allez-y
* Allez-y
* ''Menu File-> Import> Import Video''  
* ''Menu File-> Import> Import Video''  
* Dans la boîte de dialogue de déploiement vidéo, choisissez "Embed video in SWF and play in timeline" (intégrer la vidéo dans SWF et la jouer dans le scénario").
* Dans la boîte de dialogue de déploiement vidéo, choisissez "Embed video in SWF and play in timeline" (intégrer la vidéo dans SWF et la jouer dans le scénario").


[[File:flash-cs3-video-deployement-dialog.png|thumb|600px|none|de dialogue de déploiement]]
[[File:flash-cs3-video-deployement-dialog.png|thumb|600px|none|Dialogue de déploiement dans CS3]]
 
; Étape 3 - Ajouter des contrôles simples
* Vous avez besoin d'au '''moins'''  un bouton de lecture, mais en ajoutant quelques boutons supplémentaires qui permettent à un utilisateur d'accéder à certains images peut également être utile.
* Nous avons juste utilisé le composant bouton décrit dans les composants Flash tutorial.


Dans notre exemple, nous avons ajouté trois boutons:
; Étape 3 - Ajoutez des contrôles simples
* Le "bouton play" déplace la tête de lecture à l'image 2, où la vidéo commence
* Vous avez besoin d'au '''moins'''  un bouton de lecture, mais quelques boutons supplémentaires qui permettent à un utilisateur d'accéder directement à certains images peuvent également être utiles.
* Le "Go to Book Scene" va aller vers la trame 230.
* Nous avons utilisé des boutons de type "composant":
* Les "crédits" enverront à la fin.
** Le ''btn_play'' déplace la tête de lecture à l'image 2, où la vidéo commence
** Le "Go to Book Scene" va aller vers la trame 230.
** Les "crédits" enverront à la fin.


Le code ActionScript:
Le code ActionScript:
lang="actionscript"> <source
<source lang="actionscript">
/ * Cela va arrêter de jouer Flash tous les cadres
/* This will stop Flash from playing all the frames
L'utilisateur doit rester dans l'image 1 * /
  User must stay in Frame 1 */
stop ();
stop();


/ * Associé une fonction de gestionnaire pour chaque occurrence de bouton * /
/* Associate a handler function for each button instance */


btn_credits.addEventListener (MouseEvent.CLIQUEZ, clickHandler);
btn_credits.addEventListener(MouseEvent.CLICK, clickHandler);
btn_play.addEventListener (MouseEvent.CLIQUEZ, clickHandler);
btn_play.addEventListener(MouseEvent.CLICK, clickHandler);
btn_book.addEventListener (MouseEvent.CLIQUEZ, clickHandler);
btn_book.addEventListener(MouseEvent.CLICK, clickHandler);


/ * Au lieu d'écrire une fonction pour chaque bouton, nous venons d'en créer un.
/* Instead of writing a function for each button, we just create one.
Afin de comprendre quel bouton a été cliqué, nous demandons de l'événement
  In order to understand which button was clicked, we ask from the event
l'étiquette du bouton (event.currentTarget.label).
  the label of the button(event.currentTarget.label).
Nous avons ensuite gotoAndStop (x) à l'image 374 pour les crédits
  Then we gotoAndStop(x) to Frame 374 for Credits
Ou nous pouvons lire le film qui se trouve dans l'image 2
  Or we can play the movie that sits in frame 2
*/
*/
clickHandler fonction (event: MouseEvent): void {
function clickHandler(event:MouseEvent):void {
switch (event.currentTarget.label)
switch (event.currentTarget.label)
{
{
cas «crédits»:
case "Credits" :
gotoAndStop (609);
gotoAndStop(609);
break;
break;
cas "PLAY":
case "PLAY" :
gotoAndPlay (2);
gotoAndPlay(2);
break;
break;
cas "Aller au Livre Scène":
case "Go to Book Scene" :
gotoAndPlay (230);
gotoAndPlay(230);
break;
break;
}
}
}
}


/ * Ceci montre comment ouvrir une URL dans un navigateur Web * /
/* This shows how to open an URL in a WebBrowser */
btn_edutech_wiki.addEventListener (MouseEvent.CLIQUEZ, gotoURL);
btn_edutech_wiki.addEventListener(MouseEvent.CLICK, GoToUrl);


fonction gotoURL (event: MouseEvent): void {
function GoToUrl(event:MouseEvent):void {
var url: String = "http://edutechwiki.unige.ch/en/Flash_video_component_tutorial";
var url:String = "http://edutechwiki.unige.ch/en/Flash_video_component_tutorial";
demande var: URLRequest = new URLRequest (url);
var request:URLRequest = new URLRequest(url);
essayer
try
{
{
(Demande, '_blank') navigateToURL;
navigateToURL(request, '_blank');
}
}
catch (e: Error)
catch (e:Error)
{
{
trace ("Une erreur s'est produite!");
trace("Error occurred!");
}
}
}
}
</ Source>
</source>
 


Le "embed en option timeline" est probablement utile uniquement si vous avez l'intention d'ajouter des animations qui se synchronisent avec la vidéo comme décrit dans l'exemple suivant. Sinon, il est préférable d'utiliser une vidéo externe avec le composant de lecture vidéo tel que décrit ci-dessus.
Utiliser une vidéo dans la timeline est uniquement utile si vous avez l'intention d'ajouter des animations qui se synchronisent avec la vidéo comme décrit dans l'exemple suivant. Sinon, il est préférable d'utiliser une vidéo externe avec le composant de lecture vidéo.
; Résultats
; Résultats
* [http://tecfa.unige.ch/guides/flash/ex/component-video-intro/flash-cs3-video-simple-embedd.html flash-cs3-video-simple-embedd.html]
* [http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/flash-cs5-video-simple-embedd.html flash-cs5-video-simple-embedd.html]
* Source: [http://tecfa.unige.ch/guides/flash/ex/component-video-intro/flash-cs3-video-simple-embedd.fla flash-cs3-video-simple-embedd.fla]
* Source: [http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/flash-cs5-video-simple-embedd.fla flash-cs5-video-simple-embedd.fla]
* Répertoire: http://tecfa.unige.ch/guides/flash/ex/component-video-intro/
* Répertoire: http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/


Note: j'ai remarqué que lorsque vous importez plus d'une fois un film, taille du fichier sera beaucoup grandir! Probablement un effet secondaire de l'annulation mécanisme. Alors '''ne faites pas ''cela.'' ''' '''''Si vous constatez ce problème, enregistrez le fichier avec "enregistrer sous". '' ''' '''''La nouvelle version sera ok. '' ''' '''''(Peut-être il ya une autre solution pour couper à la taille du fichier).'' '''
Note: j'ai remarqué dans CS3 que lorsqu'on importe plus d'une fois un film, la taille du fichier grandit encore! Probablement un effet secondaire du mécanisme d'annulation. A éviter ! Si vous constatez ce problème, enregistrez le fichier avec "enregistrer sous" et la nouvelle version sera ok. Histoire pas suivie dans CS4/CS5...


=== Vidéos de timeline augmentés ===
=== Vidéos de timeline augmentées ===


Enrobage vidéo dans la chronologie logique (AMHA) si vous cherchez un moyen simple de synchroniser d'autres animations avec la vidéo. Cette technique ne nécessite aucune connaissance plus supplémentaires ActionScript que vous avez besoin pour l'animation simple et la navigation. Toutefois, des vidéos intégrées feront l'*. fla et le résultant *. swf vraiment énorme.
Vous pouvez directement insérer une vidéo dans la timeline - méthode décrite ci-dessus - si vous cherchez un moyen simple de synchroniser d'autres animations avec la vidéo. Cette technique nécessite aucune connaissance de ActionScript au-delà des méthodes de navigation dans la timeline.


[[File:flash-cs3-embedded-video-plus-animation.jpg|thumb|600px|none|vidéo intégré avec des animations]]
[[File:flash-cs3-embedded-video-plus-animation.jpg|thumb|600px|none|vidéo intégrée avec des animations]]


Dans cet exemple, nous avons ajouter des animations diverses (par exemple deux interpolations de mouvement et une interpolation de forme) au projet. Ci-dessous vous pouvez voir que les livres sont tumbling sur une étagère pendant que la vidéo montre une «vraie» bibliothèque.
Dans cet exemple, nous avons ajouté des animations diverses (par exemple deux interpolations de mouvement et une interpolation de forme) au projet. Ci-dessous vous pouvez voir que les livres sortent d'une étagère pendant que la vidéo montre une «vraie» bibliothèque.


Ci-dessous le code de script d'action à mettre en œuvre un bouton de lecture simple, plus deux autres qui ne sont pas vraiment nécessaire, c'est à dire un "crédits" et un "goto ..." bouton. Tout le reste est tout simple animation Flash.
Ci-dessous le code de script d'action à mettre en œuvre un bouton de lecture simple, plus deux autres qui ne sont pas vraiment nécessaires, c'est à dire des boutons "crédits" et "goto ..." Tout le reste sont des animations Flash simples.


lang="actionscript"> <source
<source lang="actionscript">
/ * Cela va arrêter de jouer Flash tous les cadres
/* This will stop Flash from playing all the frames
L'utilisateur doit rester dans l'image 1 * /
  User must stay in Frame 1 */
stop ();
stop();


/ * Associé une fonction de gestionnaire pour chaque occurrence de bouton * /
/* Associate a handler function for each button instance */


btn_credits.addEventListener (MouseEvent.CLIQUEZ, clickHandler);
btn_credits.addEventListener(MouseEvent.CLICK, clickHandler);
btn_play.addEventListener (MouseEvent.CLIQUEZ, clickHandler);
btn_play.addEventListener(MouseEvent.CLICK, clickHandler);


/ * Au lieu d'écrire une fonction pour chaque bouton, nous venons d'en créer un.
/* Instead of writing a function for each button, we just create one.
Afin de comprendre quel bouton a été cliqué, nous demandons de l'événement
  In order to understand which button was clicked, we ask from the event
l'étiquette du bouton (event.currentTarget.label).
  the label of the button(event.currentTarget.label).
Nous avons ensuite gotoAndStop (x) à l'image 572 pour les crédits
  Then we gotoAndStop(x) to Frame 572 for Credits
Ou nous pouvons lire le film qui se trouve dans l'image 2
  Or we can play the movie that sits in frame 2
*/
*/
clickHandler fonction (event: MouseEvent): void {
function clickHandler(event:MouseEvent):void {
switch (event.currentTarget.label)
switch (event.currentTarget.label)
{
{
cas «crédits»:
case "Credits" :
gotoAndStop (572);
gotoAndStop(572);
break;
break;
cas "PLAY":
case "PLAY" :
gotoAndPlay (2);
gotoAndPlay(2);
break;
break;
}
}
}
}


/ * Ceci montre comment ouvrir une URL dans un navigateur Web * /
/* This shows how to open an URL in a WebBrowser */


btn_edutech_wiki.addEventListener (MouseEvent.CLIQUEZ, gotoURL);
btn_edutech_wiki.addEventListener(MouseEvent.CLICK, GoToUrl);


fonction gotoURL (event: MouseEvent): void {
function GoToUrl(event:MouseEvent):void {
var url: String = "http://edutechwiki.unige.ch/en/Flash_video_component_tutorial";
var url:String = "http://edutechwiki.unige.ch/en/Flash_video_component_tutorial";
demande var: URLRequest = new URLRequest (url);
var request:URLRequest = new URLRequest(url);
essayer
try
{
{
(Demande, '_blank') navigateToURL;
navigateToURL(request, '_blank');
}
}
catch (e: Error)
catch (e:Error)
{
{
trace ("Une erreur s'est produite!");
trace("Error occurred!");
}
}
}
}
</ Source>
</source>


; Résultats
; Résultats (il faudrait ajuster les anims pour CS5, enfin le fichier marche ...)
* [http://tecfa.unige.ch/guides/flash/ex/component-video-intro/flash-cs3-video-timeline-embedd.html flash-cs3-video-calendrier-embedd.html]
* [http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/flash-cs5-video-timeline-embedd.html flash-cs5-video-calendrier-embedd.html]
* Source: [http://tecfa.unige.ch/guides/flash/ex/component-video-intro/flash-cs3-video-timeline-embedd.fla flash-cs3-video-calendrier-embedd.fla]
* Source: [http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/flash-cs5-video-timeline-embedd.fla flash-cs5-video-calendrier-embedd.fla]
* Répertoire: http://tecfa.unige.ch/guides/flash/ex/component-video-intro/
* Répertoire: http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/
 
== Utilisation des points de repère pour la navigation et pour déclencher des animations ==


== Utilisation des points de repère pour la navigation et de déclencher des animations ==
Travailler avec des points de repère est la bonne façon pour faire interagir une vidéo avec d'autres animations. C'est une solution plus difficile que d'utiliser des vidéos imbriquées dans timeline, mais elle est plus élégante et elle est nettement moins gourmande en ressources.


Travailler avec des points de repère est une autre façon d'avoir votre vidéo interagir avec d'autres animations. C'est une solution plus difficile que d'utiliser des vidéos timeline, mais plus élégant.
=== Sauts vers des points de repère ===


=== Saut à des points de repère ===
(1) Implémenter des sauts vers des '''points de repère (cue points) insérés avec l'outil Flash / Media Encoder''' est assez facile si vous savez comment utiliser des boutons. Lire '''plus loin''' pour apprendre comment faire la même choses avec les points de repères de type ActionScript.


Code pour le saut à des points de repère est assez facile si vous savez comment utiliser des boutons ou des composants bouton.
* Insérez un composant de lecture vidéo comme ci-dessus
* Donnez-lui un nom d'instance comme ''video''
* Ensuite, copiez-collez le code ci-dessous (ou programmez quelque chose de semblable)


* Insérer un composant de lecture vidéo comme ci-dessus
En prime, j'ai ajouté quelques arbres invisibles (trees) qui deviennent visibles lorsque l'utilisateur accède au point de repère.
* Donnez-lui un nom d'instance comme la ''vidéo''
* Ensuite, copiez collez le code ci-dessous (ou quelque chose de semblable)


En prime, j'ai ajouté quelques arbres invisibles qui deviennent visibles lorsque l'utilisateur accède à la point de repère.
Pour adapter ce code à vos besoins: Substituez votre point de repère (donc remplacez "XPS" par "....2). Supprimez l'animation arbres, si vous voulez ...
* J'ai importé un dessin SVG et l'a appelé ''arbres.''


Pour adapter ce code à vos besoins: Change "XPS" au nom de votre point de repère. Supprimez les lignes d'arbres, si vous ne voulez pas cela ...
<source lang="actionscript">
lang="actionscript"> <source
btn_laptop.addEventListener(MouseEvent.CLICK, jumpLapTop);
btn_laptop.addEventListener (MouseEvent.CLIQUEZ, jumpLapTop);


jumpLapTop fonction (event: MouseEvent): void {
function jumpLapTop(event:MouseEvent):void {
video.seekToNavCuePoint («XPS»);
video.seekToNavCuePoint ("XPS");
trees.visible = true;
trees.visible = true;
}
}
trees.visible = false;
trees.visible = false;
</ Source>
</source>
 
Sans arbres:
<source lang="actionscript">
btn_laptop.addEventListener(MouseEvent.CLICK, jumpLapTop);


Sans les arbres:
function jumpLapTop(event:MouseEvent):void {  
lang="actionscript"> <source
video.seekToNavCuePoint ("YOUR_CUEPOINT"); }
btn_laptop.addEventListener (MouseEvent.CLIQUEZ, jumpLapTop);
</source>
jumpLapTop fonction (event: MouseEvent): void {video.seekToNavCuePoint ("YOUR_CUEPOINT");}
</ Source>


; Exemple
; Exemple
* [http://tecfa.unige.ch/guides/flash/ex/component-video-intro/flash-cs3-video-goto-cues.html flash-cs3-video-goto-cues.html]
* [http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/flash-cs5-video-goto-cues.html flash-cs5-video-goto-cues.html]
* Source: [http://tecfa.unige.ch/guides/flash/ex/component-video-intro/flash-cs3-video-goto-cues.fla flash-cs3-video-goto-cues.fla]
* Source: [http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/flash-cs5-video-goto-cues.fla flash-cs5-video-goto-cues.fla]
* Répertoire http://tecfa.unige.ch/guides/flash/ex/component-video-intro/
* Répertoire http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/


'''Avis important:'''  
Ce code fonctionne '''uniquement avec les points de repère de type ''navigation''  '''et que vous pouvez insérer dans l'outil Flash / Media Encoder (programme externe à Flash mais livré avec et qui change de nom suivant la version de Flash)


* Ce code fonctionne uniquement avec les points de repère de ''navigation''  et vous pouvez insérer de la vidéo Flash / Media Encoder. Si vous utilisez des points de repère ActionScript (inséré avec l'inspecteur de composants ou dans un script), puis utilisez la ligne de code suivante:
(2) Si vous utilisez des '''points de repère ActionScript''' (inséré avec le panneau de propriétés, l'inspecteur de composants ou dans un script), utilisez la ligne de code suivante dans CS3 ou regardez le code dans l'exemple ci-dessous.


Remplacer
Remplacer
  video.seekToNavCuePoint («XPS»);
  video.seekToNavCuePoint ("XPS");
par:
par quelque chose comme (voir ci-dessous):
  video.seek (video.findCuePoint ("XPS", "actionscript") du temps.);
  video.findCuePoint("Flash_book", CuePointType.ACTIONSCRIPT);


Fondamentalement, vous devez d'abord la recherche d'un point de repère par son nom, puis des extraits de son temps, et ensuite donner le temps de la méthode de ''recherche.''  Même alors, le résultat n'est pas garanti. Il peut fonctionner sur votre ordinateur local, mais pas dans Flash Player navigateur de votre - [[User:Daniel K. Schneider|Daniel K. Schneider]] 13h13, le 21 avril 2010 (UTC).
Exemple complet qui contient le code pour les types:
<source lang="actionscript">
import fl.video.*;


=== Gestion des événements du film ===
trees.visible = false;


La mise en œuvre d'animation qui est déclenché par vidéo rencontre le de points de repère a été un peu plus difficile car [http://livedocs.adobe.com/flash/9.0/main/00000565.html la documentation] n'était pas si facile à trouver.
btn_laptop.addEventListener(MouseEvent.CLICK, jumpLapTop);


Le code suivant affiche une trace de tous vos points de repère dans la fenêtre Flash CS3 sortie.
// --------------------- Pour cue point de navigation
Pour le faire fonctionner:
* Insérer un composant vidéo sur la scène et ajouter une source *. flv (comme expliqué précédemment)
* Donnez-lui un nom d'instance. Je l'ai appelé '''video_component.'''  Si votre composant donner un autre nom, vous devrez modifier le code ActionScript ci-dessous.
lang="actionscript"> <source
/ / Vous devez importer cette classe (même quand vous venez de script le calendrier!)
l'importation fl.video.MetadataEvent;


video_component.addEventListener (MetadataEvent.CUE_POINT, cp_listener);
function jumpLapTop(event:MouseEvent):void {
video.seekToNavCuePoint ("XPS");
trees.visible = true;
}


cp_listener fonction (eventObject: MetadataEvent): void {
btn_book.addEventListener(MouseEvent.CLICK, jumpFlashBook);
trace ("Le temps écoulé en secondes:" + video_component.playheadTime);
 
trace ("nom du point Cue est:" + eventObject.info.name);
// --------------------- Pour cue point de type "ActionScript"
trace ("type de point de repère est:" + eventObject.info.type);
function jumpFlashBook(event:MouseEvent):void {
var cue_point:Object = video.findCuePoint("Flash_book", CuePointType.ACTIONSCRIPT);
// trace (cue_point);
video.seek(cue_point.time);
}
}
</source>


</ Source>
Vous devez d'abord chercher un point de repère par son nom, puis extraire son "temps" (''time''), et ensuite donner ce temps à la méthode ''seek''. Le résultat n'est pas garanti, car la partie de la vidéo à afficher doit être téléchargée avant. Il peut fonctionner sur votre ordinateur local, mais pas à distance ...
 
=== Gestion d'événements de la vidéo ===
 
La mise en œuvre d'animations qui sont déclenchées par les points de repère rencontrés dans la vidéo est un peu plus difficile (voir aussi [http://livedocs.adobe.com/flash/9.0/main/00000565.html la documentation Flash 9])
 
; Identifier les points de repère (CS3/CS4 uniquement)
 
Il est difficile de savoir où se trouvent les points de repère dans CS3 et CS4. Le code suivant permet d'afficher une trace de tous vos points de repère dans la fenêtre output de Flash. Pour le faire fonctionner:
* Insérer un composant vidéo sur la scène et ajoutez une source *.flv (comme expliqué précédemment)
* Donnez à ce composant un nom d'instance. Je l'ai appelé '''video_component.'''  Si votre composant a un autre nom, vous devrez modifier le code ActionScript ci-dessous.
<source lang="actionscript">
// You must import this class (even when you just script in the timeline !!)
import fl.video.MetadataEvent;
 
video_component.addEventListener(MetadataEvent.CUE_POINT, cp_listener);
 
function cp_listener(eventObject:MetadataEvent):void {
        trace("Elapsed time in seconds: " + video_component.playheadTime);
        trace("Cue point name is: " + eventObject.info.name);
        trace("Cue point type is: " + eventObject.info.type);
}
</source>


Lorsque vous jouez la vidéo *. flv, vous pouvez voir ce genre de messages dans la fenêtre de sortie:
Lorsque vous jouez la vidéo *. flv, vous pouvez voir ce genre de messages dans la fenêtre de sortie:
lang="actionscript"> <source
<source lang="actionscript">
Le temps écoulé en secondes: 7,485
Elapsed time in seconds: 7.485
nom du point Cue est: palm_tree
Cue point name is: palm_tree
type de point de repère est la suivante: l'événement
Cue point type is: event
Le temps écoulé en secondes: 9,888
Elapsed time in seconds: 9.888
nom du point Cue est: livres
Cue point name is: books
type de point de repère est la suivante: la navigation
Cue point type is: navigation
Le temps écoulé en secondes: 20,52
Elapsed time in seconds: 20.52
nom du point Cue est: missing_manual
Cue point name is: missing_manual
type de point de repère est la suivante: l'événement
Cue point type is: event
Le temps écoulé en secondes: 26,188
Elapsed time in seconds: 26.188
nom du point Cue est: XPS
Cue point name is: XPS
type de point de repère est la suivante: la navigation
Cue point type is: navigation
Le temps écoulé en secondes: 31,674
Elapsed time in seconds: 31.674
nom du point Cue est: ubuntu
Cue point name is: ubuntu
type de point de repère est la suivante: l'événement
Cue point type is: event
</ Source>
</source>
 
'''Identification de points de repère dans CS5'''


Maintenant, nous allons mettre cette information à utiliser et à réécrire le code. Étant donné que cette approche de la fin de ce tutoriel nous allons faire un peu plus compliqué. Mais l'animation qui en résulte est encore assez laid. Je suis seulement à enseigner certaines Flash et je n'ai pas le temps pour les illustrations décent ou même un bon design. ''Les élèves''  devraient viser à la fois:)
* Insérez la vidéo dans un composant vidéo
* Cliquez sur le composant
* Examinez le panneau "properties" (tout en bas ...)


Nous allons créer quelques clips vidéo Flash:
'''Préparation de quelques clips '''
* Appuyez sur CTRL-F8 (menu ''Insertion-> Nouveau symbole)'' et sélectionnez "clip"
* Ensuite, double cliquez sur le nouvel élément de bibliothèque pour entrer dans le mode d'édition symbole. Créer une animation que vous aimez. Assurez-vous que vous êtes conscient à quel niveau vous éditez, à savoir veiller à revenir à la scène lorsque vous avez terminé
!
* Alternativement, vous pouvez également importer des animations Flash simple que vous avez fait avant que des clips.


Une fois que vous en avez un ou plusieurs de ces animations:
Nous allons d'abord créer quelques clips Flash:
* Créer une instance de chaque sur la scène et donnez-lui un nom d'instance, par exemple
* Appuyez sur CTRL-F8 (menu ''Insert-> New symbol'') et sélectionnez "movie clip"
* Créez des animations pour chaque clip !
* Alternativement, vous pouvez importer des clips fait ailleurs.
 
Une fois que vous en avez une ou plusieurs de ces animations:
* Créez une instance de chaque clip sur la scène et donnez-lui un nom d'instance, par exemple
  movie_books
  movie_books
* Puis dans le code comme vous voudrez ''peut-stop ()''  à chaque occurrence de clip et aussi certains d'entre eux invisible, par exemple:
* Stopper chaque occurrence de clip et rendez certains invisibles, par exemple:
  movie_books.stop ();
  movie_books.stop();
  movie_books.visible = false;
  movie_books.visible = false;


Au cœur de la gestion de point de repère des événements est un gestionnaire d'événements qui se sont inscrits, soit nous utilisons exactement le même principe que pour l'interaction utilisateur avec des boutons (bouton Flash tutorial).
'''Déclencher des clips avec des points de repère'''
 
Au cœur de la gestion des points de repère existe un gestionnaire d'événements (pas de surprise, on utilise le même principe que pour l'interaction utilisateur avec des boutons).


La fonction cuepoint_listener comprend une instruction switch qui traite chaque événement qu'il reçoit.
La fonction cuepoint_listener comprend une instruction switch qui traite chaque événement qu'il reçoit.
* Pour la plupart de ces événements nous jouer quelques clip. Si le clip a été caché, rendre visible aussi, par exemple
* Pour la plupart de ces événements nous allons juste jouer un clip. Si le clip a été caché, nous le rendons visible, par exemple
  movie_books.visible = true;
  movie_books.visible = true;
  movie_books.play ();
  movie_books.play ();
* Aussi, nous devons cesser de films précédents, voire les rendre invisibles à nouveau (comme vous le souhaitez)
* Aussi, nous devons stopper des clips, voire les rendre invisibles à nouveau (comme vous le souhaitez ....)
 
Si vous voulez de la musique, vous pouvez par exemple importer un fichier audio dans la bibliothèque, puis l'exporter pour ActionScript (clic-droit sur celle-ci). Mémorisez son nom de classe. Sinon, vous pouvez importer des sons de manière dynamique à partir de fichiers externes, procédure expliquée dans [[Flash tutoriel drag and drop]].


Si vous voulez textures de la musique, vous pouvez par exemple pour l'importation d'un fichier audio dans la bibliothèque, puis de l'exporter pour l'action script (clic-droit sur celle-ci). Assurez-vous que vous vous souvenez de son nom de classe. Sinon, vous pouvez importer des sons de manière dynamique à partir de fichiers externes comme le montre le glisser-déposer Flash tutorial.
Voici donc le code complet que vous pouvez trouver dans le fichier *.fla de cet exemple:


Voici donc le code complet que vous pouvez trouver dans le fichier *. fla de cet exemple:
<source lang="actionscript">
lang="actionscript"> <source
import fl.video.MetadataEvent;
l'importation fl.video.MetadataEvent;
// Stop all the animations of the various movie clips
/ / Arrête toutes les animations des clips vidéo divers
// Make the bookshelf invisible
/ / Faire de la bibliothèque invisible
movie_trees.stop();
movie_trees.stop ();
movie_books.stop();
movie_books.stop ();
movie_books.visible=false;
movie_books.visible = false;
movie_penguin.stop();
movie_penguin.stop ();
movie_manual.stop();
movie_manual.stop ();
movie_manual.visible=false;
movie_manual.visible = false;


/ / Il s'agit d'un son de la musique de classe
// This is a sound of the class music
/ / A été défini par l'exportation du fichier de musique dans la bibliothèque
// Was defined by exporting the music file in the library
var musique: Musique Music = new ();
var music:Music = new Music();
var = volume SoundTransform nouvelles (0,2, 0);
var volume = new SoundTransform(0.2, 0);


/ / Ajouter un cuePoint pour la fin et qui n'est pas dans le film flv
// Add a cuepoint for the end and which is not in the flv movie
video_component.addASCuePoint (40, "End");
video_component.addASCuePoint(40, "End");


video_component.addEventListener (MetadataEvent.CUE_POINT, cuepoint_listener);
video_component.addEventListener(MetadataEvent.CUE_POINT, cuepoint_listener);


cuepoint_listener fonction (obj: MetadataEvent): void {
function cuepoint_listener(obj:MetadataEvent):void {
switch (obj.info.name)
switch (obj.info.name)
{
{
cas "palm_tree":
case "palm_tree" :
movie_trees.play ();
movie_trees.play();
break;
break;
cas "livres":
case "books" :
movie_trees.stop ();
movie_trees.stop();
movie_books.visible = true;
movie_books.visible=true;
movie_books.play ();
movie_books.play();
break;
break;
cas "missing_manual":
case "missing_manual" :
movie_books.stop ();
movie_books.stop();
movie_books.visible = false;
movie_books.visible=false;
movie_manual.visible = true;
movie_manual.visible=true;
movie_manual.play ();
movie_manual.play();
break;
break;
cas "XPS":
case "XPS" :
movie_manual.stop ();
movie_manual.stop();
movie_manual.visible = false;
movie_manual.visible=false;
var = chanson music.play (0,3, volume);
var song = music.play(0,3,volume);
break;
break;
cas "ubuntu":
case "ubuntu" :
movie_penguin.play ();
movie_penguin.play();
break;
break;
cas "End":
case "End" :
/ / Song.stop ();
// song.stop();
movie_penguin.stop ();
movie_penguin.stop();
movie_penguin.visible = false;
movie_penguin.visible=false;
movie_books.visible = false;
movie_books.visible=false;
}
}
}
}


/ * Ceci montre comment ouvrir une URL dans un navigateur Web * /
/* This shows how to open an URL in a WebBrowser */
btn_edutech_wiki.addEventListener (MouseEvent.CLIQUEZ, gotoURL);
btn_edutech_wiki.addEventListener(MouseEvent.CLICK, GoToUrl);


fonction gotoURL (event: MouseEvent): void {
function GoToUrl(event:MouseEvent):void {
var url: String = "http://edutechwiki.unige.ch/en/Flash_video_component_tutorial";
var url:String = "http://edutechwiki.unige.ch/en/Flash_video_component_tutorial";
demande var: URLRequest = new URLRequest (url);
var request:URLRequest = new URLRequest(url);
essayer
try
{
{
(Demande, '_blank') navigateToURL;
navigateToURL(request, '_blank');
}
}
catch (e: Error)
catch (e:Error)
{
{
trace ("Une erreur s'est produite!");
trace("Error occurred!");
}
}
}
}


</ Source>
</source>
 
* Dans l'exemple ci-dessus, à chaque point de repère l'animation d'avant s'arrête et/ou devient invisible et la nouvelle animation se déclenche (ex. le point de repère "books" stoppe l'animation du palmier et déclenche l'animation de la bibliothèque. Si nous voulons que l'animation s'arrête avant la prochaine, nous pouvons créer un point de repère par exemple "palm_trees_end" et dans le switch il faut rajouter les lignes suivantes:
 
<source lang="actionscript">
                case "palm_tree_end" :
movie_trees.stop();
        break;
</source>
 
=== Utilisation de la seekbar ===
Lorsque vous créez des événements qui se déclenchent lorsqu'on détecte un cue point, si l'utilisateur utilise la seekbar, vous risquez qu'il puisse sauter le cue point et que votre animation/fonction ne soit pas activée.
Pour pouvoir détecter le fait que l'utilisateur ait utilisé la seekbar, il faut utiliser l'événement SEEKED. Ici myMovie est le nom de l'instance de FLVPlayback.
<source lang="actionscript">
myMovie.addEventListener(fl.video.VideoEvent.SEEKED, myfunction);
</source>
Ensuite, si on veut marquer à quel chapitre on se trouve (et que par exemple l'utilisateur est passé du début de la vidéo à la moitié du chapitre 2), on doit aller chercher le cue point qui précède l'endroit où l'on se trouve (dans ce cas le cue point qui indique le début du chapitre 2). On va utiliser la méthode findNearestCuePoint.
<source lang="actionscript">
myMovie.addEventListener(fl.video.VideoEvent.SEEKED, myfunction);
 
function myfunction(event:fl.video.VideoEvent):void
{
  var previous_cue_point = myMovie.findNearestCuePoint(myMovie.playheadTime).name;
  //faire quelque chose en fonction de la valeur de cette variable
}
</source>
Cette fonction va donc mettre dans la variable previous_cue_point le nom du cue point. On peut ensuite, par exemple, utiliser un "switch" pour définir comment réagir en fonction du cue point qu'on vient de dépasser.


; Exemple
; Exemple
* [http://tecfa.unige.ch/guides/flash/ex/component-video-intro/flash-cs3-video-cue-events.html flash-cs3-video-cue-events.html]
* [http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/flash-cs5-video-cue-events.html flash-cs5-video-cue-events.html]
* Source: [http://tecfa.unige.ch/guides/flash/ex/component-video-intro/flash-cs3-video-cue-events.fla flash-cs3-video-cue-events.fla]
* Source: [http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/flash-cs5-video-cue-events.fla flash-cs5-video-cue-events.fla]
 
* Répertoire: http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/


* Répertoire: http://tecfa.unige.ch/guides/flash/ex/component-video-intro/
* [http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/office-dks3.flv bureau-dks3.flv]


=== Les points de repère de travail par l'exemple ===
=== Exercice ===


'''Adapter l'exemple suivant:'''  
'''Adaptez l'exemple suivant:'''  
Regardez d'abord ceci: [http://tecfa.unige.ch/guides/flash/ex/component-video-intro/flash-cs3-video-cue-events-exercise.html flash-cs3-video-cue-événements-exercise.html]
Regardez d'abord ceci: [http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/flash-cs5-video-cue-events-exercise.html flash-cs5-video-cue-événements-exercise.html]


Télécharger
Télécharger
* [http://tecfa.unige.ch/guides/flash/ex/component-video-intro/flash-cs3-video-cue-events-exercise.fla flash-cs3-video-cue-events.fla]
* [http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/flash-cs5-video-cue-events-exercise.fla flash-cs5-video-cue-events-exercise.fla]
* En option (que vous pouvez exécuter l'exemple tel quel): [http://tecfa.unige.ch/guides/flash/ex/component-video-intro/office-dks3.flv bureau-dks3.flv]
* En option (sinon remplacez par votre video): [http://tecfa.unige.ch/guides/flash/ex5/component-video-intro/office-dks5.flv bureau-dks5.flv]


Faire de cette vidéo composante vos propres points de repère-renforcée. Conditions préalables
<source lang="actionscript">
* composant Flash bouton tutoriel
import fl.video.MetadataEvent;
* Flash intégré clip tutoriel
* (Facultatif) ActionScript 3 objets tutoriel interactif


Ci-dessous est une copie du code AS3, vous devez modifier. Il se trouve dans la couche Script.
/* Instructions:
1. Add a *.flv video to the video component (edit with component inspector)
2. Use a viewer to analyse the video and write down at least 3 moments
  you want to declare as cuepoints. You need a name and seconds
3. Fix the code below:
  a. Add cue points below or in the component inspector
  b. stop all your animations, make them invisible if you like
  c. Add "if clauses" in cuepoint_listener
  d. Edit the jump1 function
*/


lang="actionscript"> <source
// 3.a. Add a cuepoint with ActionScript, else use the component inspector
l'importation fl.video.MetadataEvent;


.Instructions
video_component.addASCuePoint(10.5, "wonder");
1. Ajouter une vidéo *. flv à la composante vidéo (modifier avec l'inspecteur de composant)
2. Utilisez une visionneuse pour analyser la vidéo et écrire au moins 3 moments
vous voulez déclarer que cuePoints. Vous avez besoin d'un nom et une seconde
3. Fixer le code ci-dessous:
a. Ajouter des points de repère ci-dessous ou dans l'inspecteur des composants
b. arrêter toutes les animations, les rendre invisibles si vous le souhaitez
c. Ajouter "si clauses" dans cuepoint_listener
d. Modifier la fonction jump1
*/


/ / 3.a. Ajouter un cuePoint avec ActionScript, sinon utilisez l'inspecteur de composants
// 3.b. Stop all the animations of the various movie clips
// 1. Add more animations here and kill the example anim
// 2. Your embedded clips must have an instance name in the Flash Scene
// copy/paste the two following lines, i.e. add anim2 etc. and adapt


video_component.addASCuePoint (10,5 ", demande");
anim1.visible=false;
anim1.stop();


/ / 3.b. Arrêtez toutes les animations des clips vidéo divers
// Optional: Add sound from a sound file in the library.  
/ / 1. Ajouter plus d'animations ici et tuer les anim par exemple
// Was defined by exporting the music file in the library to AS3
/ / 2. Vos clips embarqués doit avoir un nom d'instance dans la scène Flash
var guitar_music = new Guitarmusic();
/ / Copier / coller les deux lignes suivantes, à savoir ajouter anim2 etc et d'adapter
var volume=new SoundTransform(0.2,0);


anim1.visible = false;
// 3.c Add more if clauses to the cuepoint_listener function
anim1.stop ();
video_component.addEventListener(MetadataEvent.CUE_POINT, cuepoint_listener);


/ / Facultatif: Ajouter du son à partir d'un fichier audio dans la bibliothèque.
function cuepoint_listener(event) {
/ / A été défini par l'exportation du fichier de musique dans la bibliothèque pour AS3
var = guitar_music Guitarmusic new ();
var = volume SoundTransform nouvelles (0.2,0);


/ / Ajouter 3.c plus si les clauses de la fonction cuepoint_listener
// get the event name
video_component.addEventListener (MetadataEvent.CUE_POINT, cuepoint_listener);
var event_name = event.info.name;


cuepoint_listener fonction (event) {
// the next three lines will just print out information to the console
// you later can remove these if you want
trace("Elapsed time in seconds: " + video_component.playheadTime);
trace("Cue point name is: " + event_name);
trace("Cue point type is: " + event.info.type);


/ / Obtenir le nom de l'événement
// deal with the cue events
  var = event_name event.info.name;
if (event_name == "wonder") {
anim1.visible=true;
anim1.play(); // should be stopped at some point ....
guitar_music.play();
}


/ / Les trois lignes suivantes sera simplement imprimer des informations à la console
/* remove this start comment line
/ / La suite, vous pouvez supprimer ces si vous voulez
if (event_name == "something") {
trace ("Le temps écoulé en secondes:" + video_component.playheadTime);
anim2.visible=true;
trace ("nom du point Cue est:" + event_name);
anim2.play();
trace ("type de point de repère est:" + event.info.type);
}
remove this end comment line */
}


/ / Acceptons les manifestations de repère
// 3.d - Adapt to your cuepoint
if (event_name == "demande") {
button1.addEventListener(MouseEvent.CLICK, jump1);
anim1.visible = true;
anim1.play (); / / doit être stoppée à un moment ....
guitar_music.play ();
}


/ * Supprimer cette ligne de commentaire commence
function jump1(event) {
if (event_name == "quelque chose") {
// next line only works if you created cue points
anim2.visible = true;
// of type navigation with the video encoder
anim2.play ();
// video_component.seekToNavCuePoint("wonder");
}
video_component.seek (video_component.findCuePoint("wonder","actionscript").time);
* supprimer cette ligne de fond commentaire /
anim1.visible=true;
anim1.play();
}
}


/ / 3.d - Adapter à votre cuePoint
</source>
button1.addEventListener (MouseEvent.CLIQUEZ, jump1);
 
== Vidéos interactives déployées dans le serveur (tecfa ou autre) ==
 
Au moment où vous aurez terminé votre tâche, il vous faudra mettre votre vidéo sur un serveur web. Afin de ne pas rencontrer de mauvaises surprises au moment de visionner votre ficher *.swf, il vous faudra faire attention à déposer '''tous les fichiers''' donc le fichier *.swf, le fichier vidéo, le fichier .xml (relatif aux sous-titres de votre vidéo) sur le serveur.


fonction jump1 (event) {
Par exemple :
  / / Ligne suivante ne fonctionne que si vous avez créé des points de repère
  http://tecfaetu.unige.ch/etu-maltt/qwerty/____/stic/stic-1/ex5/video.swf
/ / Type de navigation avec l'encodeur vidéo
  http://tecfaetu.unige.ch/etu-maltt/qwerty/____/stic/stic-1/ex5/timed-texte.xml
/ / Video_component.seekToNavCuePoint ("demande");
  http://tecfaetu.unige.ch/etu-maltt/qwerty/____/stic/stic-1/ex5/video.flv
  video_component.seek (video_component.findCuePoint ("merveille", "actionscript") du temps.);
  anim1.visible = true;
anim1.play ();
}


</ Source>
De cette manière votre fichier *.swf démarrera sans problème la vidéo avec le "timed text".


== Liens ==
== Liens ==
Ligne 697 : Ligne 814 :
=== Les entrées manuelles ===
=== Les entrées manuelles ===


; Pour les designers  
(Pour CS3, nom de liens traduit par google ..... à refaire ....- [[Utilisateur:Daniel K. Schneider|Daniel K. Schneider]] 20 octobre 2010 à 23:43 (CEST))
 
; Pour les designers (CS3)
: [http://livedocs.adobe.com/flash/9.0/main/00000552.html Utilisation du composant FLVPlayback]  
: [http://livedocs.adobe.com/flash/9.0/main/00000552.html Utilisation du composant FLVPlayback]  
:: [http://livedocs.adobe.com/flash/9.0/main/00000266.html Utilisation du composant FLVPlayback sous-titrage] (Flash CS3 Documentation).
:: [http://livedocs.adobe.com/flash/9.0/main/00000266.html Utilisation du composant FLVPlayback sous-titrage] (Flash CS3 Documentation).
::: [http://livedocs.adobe.com/flash/9.0/main/00000565.html À l'écoute des événements point de repère] - '''Lire'''
::: [http://livedocs.adobe.com/flash/9.0/main/00000565.html Cue Points CS3]
! Y compris le commentaire''''''


Ci-dessous quelques liens plus techniques qui jusqu'à présent ne sont pas vraiment beaucoup utilisé dans ce tutoriel.
; Pour les designers (CS5)
: [http://help.adobe.com/en_US/as3/components/WS5b3ccc516d4fbf351e63e3d118a9c65b32-7fe9.html Using the FLVPlayback Component]
: [http://help.adobe.com/en_US/as3/components/WS5b3ccc516d4fbf351e63e3d118a9c65b32-7fec.html Using the FLVPlayback Captioning Component]
: [http://help.adobe.com/en_US/flash/cs/using/WSb03e830bd6f770ee44b1d711124cbf9161e-8000.html Working with video cue points]


; documentation de présentation pour les programmeurs ActionScript
Ci-dessous quelques liens plus techniques qui jusqu'à présent ne sont pas vraiment beaucoup utilisés dans ce tutoriel.
 
; Documentation de présentation pour les programmeurs ActionScript (Flash 9)
Note: les URL (semble être instable si elles ne fonctionnent pas aller à [http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/js/html/wwhelp.htm?href=Part1_Programming_AS3_1.html la programmation ActionScript 3.0]
Note: les URL (semble être instable si elles ne fonctionnent pas aller à [http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/js/html/wwhelp.htm?href=Part1_Programming_AS3_1.html la programmation ActionScript 3.0]
: [http://livedocs.adobe.com/flash/9.0/main/00000251.html Utilisation de la vidéo] (Flash CS3 documentation ou de la programmation 3,0)
: [http://livedocs.adobe.com/flash/9.0/main/00000251.html Utilisation de la vidéo] (Flash CS3 documentation ou de la programmation 3,0)
Ligne 713 : Ligne 836 :
:::::[http://livedocs.adobe.com/flash/9.0/main/00000263.html Étendre la classe NetStream et ajouter des méthodes pour gérer les méthodes de rappel]
:::::[http://livedocs.adobe.com/flash/9.0/main/00000263.html Étendre la classe NetStream et ajouter des méthodes pour gérer les méthodes de rappel]


; documentation pour les programmeurs ActionScript
; Documentation pour les programmeurs ActionScript (Flash 9)
: [http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/video/package-detail.html vidéo-paquet detail.html]
: [http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/video/package-detail.html vidéo-paquet detail.html]
::[http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/video/MetadataEvent.html MetadataEvent.html]
::[http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/video/MetadataEvent.html MetadataEvent.html]
Ligne 738 : Ligne 861 :
=== Artwork ===
=== Artwork ===


Toutes les illustrations (cliparts) est de:
Toutes les illustrations (cliparts) sont de:
* http://www.openclipart.org/ (désolé je n'ai pas noté les noms des créateurs). Ce sont des fichiers SVG dans le domaine public J'ai importé via Illustrator (je ne peux vraiment pas comprendre pourquoi Flash ne supporte pas les SVG en quelque sorte ...)
* http://www.openclipart.org/ (désolé je n'ai pas noté les noms des créateurs). Ce sont des fichiers SVG dans le domaine public J'ai importé via Illustrator (je ne peux vraiment pas comprendre pourquoi Flash ne supporte pas les SVG en quelque sorte ...)


Ligne 744 : Ligne 867 :
* http://simplythebest.net/sounds/MP3/MP3_sounds.html
* http://simplythebest.net/sounds/MP3/MP3_sounds.html


Vidéos
Vidéos:
* Je leur ai fait moi-même
* Je les ai faites moi-même
* Vous pouvez télécharger des vidéos de l'Internet (assurez-vous que le droit d'auteur vous permet de le faire). Obtenir des vidéos de sites tels que YouTube n'est pas facile, vous devez soit télécharger un programme ou d'utiliser un site web spécialisé pour ce (attention aux virus et porno): Recherche de "youtube download". Vous pouvez aussi creuser dans les fichiers temporaires de votre ordinateur.
* Vous pouvez télécharger des vidéos depuis Internet (assurez-vous que le droit d'auteur vous permet de le faire). Obtenir des vidéos de sites tels que YouTube n'est pas facile, vous devez soit télécharger un programme ou utiliser un site web spécialisé pour cela (attention aux virus et à la porno). Vous pouvez aussi creuser dans les fichiers temporaires de votre ordinateur.
* Pour télécharger à partir de YouTube, j'utilise cette extension Firefox: https: / / addons.mozilla.org/en-US/firefox/addon/3006
* Pour télécharger des videos YouTube et autres sites, j'utilise cette extension Firefox: https://addons.mozilla.org/en-US/firefox/addon/3006
* http://video.google.com/ Quelques vidéos sur google sont libres d'utiliser. Ils viennent dans différents formats. Utilisez [http://video.google.com/videoadvancedsearch la recherche avancée] pour restreindre la recherche à la durée, des formats particuliers, etc Ensuite, en dessous de la vidéo, cliquez sur le lien '''regarder cette vidéo sur'''  '''video.google.com.''' '''Sinon vous ne serez pas en mesure de le télécharger. ''' '''Enfin, pour télécharger, cliquez sur "Télécharger la vidéo -iPod/PSP.'''
 
* Besoins http://vids.myspace.com/ outils spéciaux pour télécharger
Recherche de videos avec Google:
* Besoins http://youtube.com/ outils spéciaux pour télécharger
* Devenu inutile. Il fut un temps où on pouvait chercher des types de video (comme "mp4") etc. et télécharger. A l'air de ne plus marcher :( - [[Utilisateur:Daniel K. Schneider|Daniel K. Schneider]] 20 octobre 2010 à 23:59 (CEST).


[[Category: Flash]]
[[Category: Flash]]
[[Category:tutoriels Flash]]
[[Category:tutoriels Flash]]
[[Category: vidéo numérique]]
[[Category: vidéo numérique]]
[[en:Flash video component tutorial]]

Dernière version du 22 août 2016 à 19:09

(traduction assistée par Google d'un tutoriel fait pour CS3 !, à compléter ....)

Introduction

Objectifs d'apprentissage

  • Utiliser des clips vidéo avec Flash
  • Encoder des vidéos (créer des vidéos *.flv)
  • Augmenter des vidéos

Prérequis

Matériel (fichiers *.fla à manipuler)

Qualité et niveau

Ce tutoriel aidera les intéressés à démarrer. Le tutoriel n'est pas très complet, mais peut servir comme fiche pratique dans un atelier.

Prochaines étapes

  • Plus d'interactivité avec ActionScript

Autres versions

Cue Points

Les points de repère (cue points) identifient des endroits précis d'une vidéo. Ces "cue points" permettent de déclencher des événements ou encore d'implémenter une navigation plus rapide.

Il existe plusieurs façons d'ajouter des points de repère.

(1) Ajout de points de repère dans l'encodeur vidéo (Flash/Adobe Media Encoder):

Ces repères seront intégrés dans la vidéo et seront donc aussi accessibles à d'autres programmes.

  • Ouvrez un fichier vidéo dans l'encodeur.
  • Sélectionnez l'onglet Cue Points (ou cliquez sur le bouton settings dans la version CS5).
  • Glissez la tête de lecture vidéo en avant et en arrière pour identifier et sélectionnez les positions qui auront un point de repère.
  • Cliquez sur le + pour ajouter un nouveau point de repère.
  • Les event cue points sont utilisés pour déclencher des méthodes ActionScript lorsqu'un point de repère est atteint, et vous permettent de synchroniser la lecture vidéo avec d'autres événements dans la présentation Flash.
  • Les points de repère de navigation sont utilisés pour la navigation et la recherche.

La différence entre ces deux types de points de repère n'est que manifeste si vous utilisez des points de repère pour chercher quelque chose. Pour déclencher des animations à partir de points de repère, il n'y a pas d'importance si le point de repère est de type "événement", "navigation" ou "actionscript". Par contre, si vous recherchez un point de repère, il y aura une différence.

Adobe CS3 Video Encoder Points Cue

Chaque point de repère est constitué d'un nom, d'un type et du moment où il est inséré. Dans la suite, nous pouvons récupérer ces informations en Flash comme on l'expliquera ci-dessous. Quoi qu'il en soit, on suggère plutôt d'ajouter des points de repère avec du code ActionScript ou encore avec le panneau properties de CS5, car vous pouvez par la suite facilement et rapidement ajouter / supprimer des points de repère sans devoir re-encoder le film.

(2) Ajouter des Cue Points "ActionScript" avec le properties panel (ou l'inspecteur des composants)
  • Sélectionnez l'instance FLVPlayback sur la scène. Ensuite, vous pouvez ajouter des Cue Points dans le properties panel (vers le bas). Positionnez d'abord la tête de lecture de la vidéo au bon endroit (CS5). Je recommande cette méthode pour les débutants.
(3) Ajouter des points "ActionScript" de repère avec ActionScript
  • Dans ActionScript avec la méthode addASCuePoint(), par exemple:
 video_component.addASCuePoint (10.5, "wonder");

video_component est le nom que vous avez donné à l'instance du composant, 10.5 est le temps du Cue Point, et wonder est le mot donné au Cue Point.

L'avantage de la méthode ActionScript est que vous pouvez facilement modifier ces points de repère lorsque des ajustements sont nécessaires. Par exemple, vous remarquerez à un moment donné que votre fichier vidéo est trop grand et vous désirez le raccourcir. C'est beaucoup plus rapide de faire une modification dans le properties panel ou dans le code ActionScript.

L'inconvénient est que certaines méthodes faites pour les points de repère de type navigation ne fonctionnent pas.

Utilisation de sous-titres (captions)

Un sous-titre ou légende (Angl. Caption) est un texte qui est affiché dynamiquement pendant que la vidéo est en lecture. Les légendes peuvent avoir plusieurs objectifs, par exemple:

  • aider les personnes ayant une déficience auditive
  • permettre à des utilisateurs de regarder des vidéos sans faire de bruit
  • mettre l'accent sur des passages importants, ou paraphraser ou commenter ....

Pour utiliser des captions (légendes), vous devez faire trois choses:

(1) Utilisez un "skin" pour le composant de lecture qui comprend un bouton légende, par exemple SkinUnderAllNoFullscreen.swf. (recommandé, mais pas obligatoire). Alternativement, glissez-déposez le composant "caption button" dans la scène.

(2) Glissez le composant FLVPlaybackCaptioning sur la scène (en plus du composant FLVPlayback). L'endroit n'est pas important, il faut juste mettre l'instance quelque part dans le workspace ...

(3) Encodez les "captions" dans un fichier XML en format Timed Text (voir ci-dessous). Ce fichier XML doit ensuite être enregistré auprès du composant FLVPlaybackCaptioning. Une manière de l'enregistrer est d'écrire le chemin du fichier dans la case "source" des paramètres des composants, sur l'onglet des propriétés de l'objet.

Pour importer la vidéo, utilisez la même procédure que celle décrite dans Flash CS4 - Composants videos. A la différence de CS4, CS5 permet de prévisionner la vidéo déjà dans CS5. Donc il est devenu plus facile de définir les repères.

Si vous avez importé votre vidéo avec ActionScript, vous pouvez également ajouter les sous-titres avec le code suivant:

//définir une variable de sous-titres
var my_Caption = new FLVPlaybackCaptioning();

//ajouter une instance sur la scène 
addChild (my_Caption); 

//lier la source des sous-titres
my_Caption.source = "fichierdesoustitres.xml"; 

//rendre les sous-titres visibles
my_Caption.showCaptions = true;

Vous pouvez, seulement si vous voulez, créer un bouton qui activera/désactivera les sous-titres grâce au code suivant:

//on définit un bouton et on le rend attentif au clic
btn_soustitres.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
//on définit la fonction
function fl_MouseClickHandler(event:MouseEvent):void { 
// on utilise le commutateur pour intervertir les deux valeurs de la variable à chaque clic	 
switch(Caption.showCaptions) 	
{case true : Caption.showCaptions = false; 		
break; 		
case false : Caption.showCaptions = true; 		
break;} 	
}

Le Timed Text

Si vous n'êtes pas familier avec le langage XML, vous pouvez jeter un coup d'œil sur les articles XML et peut-être le tutoriel DTD. Ensuite, nous suggérons de travailler avec un éditeur XML, pour s'assurer que votre fichier est bien formé. Nous recommandons Exchanger XML Lite. Si vous n'avez pas envie d'apprendre XML, essayez de suivre exactement le modèle décrit ci-dessous. Une balise manquante ou une erreur de syntaxe comme le manque d'un ">" fera échouer votre animation

Flash ne prend pas en charge la spécification Timed Text complète (voir le [manuel]). Les utilisateurs familiers avec le langage XML peuvent copier une petite DTD de l'article en:Timed Text. La norme Timed Text est définie avec un schéma XML complexe, mais comme Adobe Flash implémente uniquement un sous-ensemble, cela ne vaut pas la peine de l'utiliser.

Pour créer ce fichier XML, vous devez savoir quelle légende (sous-titre/caption) insérer à quel moment et pendant combien de temps. Pour CS3 et CS4 vous devez visionner le film avec un lecteur vidéo externe. Adobe Media Player (gratuit) affiche le temps et d'autres clients *.flv video aussi. Sous Ubuntu, le lecteur Totem fonctionne bien.

En CS5, il n'est pas nécessaire d'utiliser un lecteur vidéo externe, vous pouvez visionner la vidéo dans l'outil CS5. Ceci dit, si vous ouvrez un ancien fichier CS3/CS4, il va falloir remplacer les 2 composants vidéo.

Exemple de fichier XML avec un sous-titrage minimaliste

Nous suggérons d'entrer au moins les données suivantes. Pour chaque sous-titre (caption) entrez:

  • Un <p> Chaque «p» devrait inclure:
  • un attribut begin qui définit quand la légende doit apparaître,
  • un attribut dur qui définit combien de temps elle restera à l'écran.

Le temps est indiqué en secondes, mais on peut également utiliser un format plus complexe, comme

02:30.5

qui veut dire 2 minutes, 30 secondes et demie.

Voici le fichier que nous avons appelé timed-text.xml et que nous avons utilisé dans cet exemple

<?xml version="1.0" encoding="UTF-8"?>
<tt xml:lang="en" xmlns="http://www.w3.org/2006/04/ttaf1"
    xmlns:tts="http://www.w3.org/2006/04/ttaf1#styling">
  <head>
    <styling>
    </styling>
  </head>
  <body>
   <div xml:lang="en">
      <p begin="1" dur="4">Daniel´s Office</p>
      <p begin="5" dur="5">My Palm Tree (from NYC)</p>
      <p begin="11" dur="7">My Bookshelf</p>
      <p begin="18" dur="5">My favorite Flash Drawing Book</p>
      <p begin="25" dur="5">My DELL XPS Laptop Flash machine</p>
      <p begin="30" dur="5">My Ubuntu Linux workstation</p>
      <p begin="33" dur="5">Working hard on Flash Tutorials using the Xemacs Editor</p>
      <p begin="42" dur="5">The outside (not my bike)</p>
    </div>
  </body>
</tt>

Note: Les légendes peuvent se chevaucher, c'est à dire Flash affichera une nouvelle légende sur une nouvelle ligne si la précédente est toujours en cours d'être affichée. Vous pouvez le voir dans l'exemple que nous présentons dans la section suivante.

Pour l'instant, prenez le modèle ci-dessous et ajoutez des balises "p". Assurez-vous que les balises sont fermées comme dans l'exemple ci-dessus. Remplacer "Let's start" par votre propre légende, bien sûr.

<?xml version="1.0" encoding="UTF-8"?>
<tt xml:lang="en" xmlns="http://www.w3.org/2006/04/ttaf1"
    xmlns:tts="http://www.w3.org/2006/04/ttaf1#styling">
  <head><styling></styling></head>
  <body>
   <div xml:lang="en">
      <p begin="1" dur="4">Let´s start</p>

    </div>
  </body>
</tt>

L'exemple ci-dessous explique comment afficher plusieurs lignes de sous-titres en même temps et comment les faire apparaître ensemble ou l'une après l'autre. Pour cela, il suffit simplement de modifier le timing des balises begin et dur. Essayez de copier le code suivant dans votre fichier timed-text.xml:

<?xml version="1.0" encoding="UTF-8"?>
<tt xml:lang="en" xmlns="http://www.w3.org/2006/04/ttaf1"
    xmlns:tts="http://www.w3.org/2006/04/ttaf1#styling">
  <head><styling></styling></head>
  <body>
   <div xml:lang="en">
   	<p begin="04" dur="8">Voici un essai avec une double ligne de sous-titres. La seconde ligne apparaîtra dans 4 secondes</p>
   	<p begin="08" dur="4">Ceci est la seconde ligne de sous-titres. Ces deux lignes disparaîtront ensemble, au même moment.</p>
   	<p begin="16" dur="4">Ces deux lignes apparaissent simultanément.</p>
   	<p begin="16" dur="6">Mais cette seconde ligne restera affichée 2 secondes de plus que la première.</p>
    </div>
  </body>
</tt>
Utilisation du composant FLVPlaybackCaptioning
  • Créez un nouveau calque et nommez-le "Légende" ou quelque chose comme ça. Allez-y.
  • Ensuite, glissez le FLVPlaybackCaptioning quelque part sur l'espace de travail ou même la scène.
  • Contrairement au composant playback, ce composant ne sera pas affiché, il peut donc être placé à n'importe quel endroit.
Personnalisation du composant
Cliquez sur le composant et modifiez les paramètres dans le panneau "properties" (CS4/CS5), puis donnez la valeur true pour showCaptions si vous souhaitez que tous les utilisateurs voient les légendes (probablement la plupart des utilisateurs ne savent pas comment les activer ou désactiver)
Précisez la source du fichier XML TimedText à télécharger.

Donc, créez le fichier xml maintenant ....

Ensuite réglez les paramètres. L'interface est différent selon la version de Flash, voir les copies d'écran ci-dessous.

Le composant FLVPlayback de CS3 - Paramètres du sous-titrage
Le composant FLVPlayback de CS4/CS5 - Paramètres du sous-titrage

Exemple simple sous-titres avec timed text

Le code de cet exemple a été décrit ci-dessus)

Tuning
  • Vous pouvez styler le texte et le fond de la boîte de la légende (voir ci-dessous)
  • Pensez aussi à régler le volume sonore: Réglez-le à 0.5 dans les paramètres du FLVplayer, voir moins. J'en ai marre d'écouter ma propre voix, vraiment.

CaptionsBox et Style

Comme expliqué par Tom Green dans légendes de vidéo avec Flash CS, vous pouvez utiliser une zone de texte différente pour afficher les légendes.

Étape 1 - Dessinez une zone de texte pour les légendes
  • Créez un calque pour les sous-titres si vous n'en possédez pas déjà un
  • Dessinez une zone de texte
    1. Donnez-lui le nom d'instance comme caption_box ou affichage etc.
    2. Sélectionnez la taille de police, la couleur etc
    3. Sélectionnez Multiligne
    4. Choisissez texte dynamique (si elle ne l'est pas)
Étape 2 - Configurez le composant

Dites à la composante de sous-titrage d'utiliser la zone de texte que vous venez de définir:

  • Ouvrez le panneau "properties" et cliquez sur la composante FLVPlaybackCaptioning
  • captionTarget = caption_box (ou affichage, c.a.d. le nom de votre boite de texte !)
  • autoLayout = false (!!!)
Le composant FLVPlayback de CS4/CS5 - Parametrage avancé du sous-titrage
Étape 3 - Ajoutez un peu de style au fichier XML

Il suffit de regarder cet exemple (fichier Timed-text2.xml). Les balises de style ne fonctionnent pas comme en HTML !

Si quelque chose n'est pas clair, téléchargez le fichier fla *. et regardez-le. Vérifiez que les deux composants videos sont ok et que tous les fichiers se trouvent dans votre ordinateur ou le serveur (y compris la peau *.swf, la video *.flv. et le fichier *.xml) et dans le même répertoire. N'oubliez pas de copier la peau!

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tt SYSTEM "mini-tt.dtd">
<tt xml:lang="en" xmlns="http://www.w3.org/2006/04/ttaf1"
    xmlns:tts="http://www.w3.org/2006/04/ttaf1#styling">
  <head>
    <styling>
      <style id="title" tts:backgroundColor="transparent" tts:color="red" tts:fontSize="24"/>
    </styling>
  </head>
  <body>
   <div xml:lang="en">
      <p begin="0" dur="9" style="title">Daniel´s Office</p>
      <p begin="5" dur="4">My Palm Tree (from NYC)</p>
      <p begin="10" dur="13" style="title">Books ....</p>
      <p begin="11" dur="7">My Bookshelf</p>
      <p begin="18" dur="5">My favorite Flash Drawing <span tts:color="red">Book</span></p>
      <p begin="24" dur="16" style="title">Computers ....</p>
      <p begin="25" dur="5">My DELL XPS Laptop Flash machine</p>
      <p begin="30" dur="5">My 
        <span tts:backgroundColor="yellow" tts:color="black">
        Ubuntu Linux workstation</span>
      </p>
      <p begin="35" dur="5">
        <span tts:backgroundColor="transparent"></span>
        Working hard on Flash Tutorials using the Xemacs Editor
      </p>
      <p begin="40" dur="4">The outside (not my bike)</p>
    </div>
  </body>
</tt>
Le résultat

Ajout de légendes avec des Cuepoints

Il existe une méthode alternative. C.f. le manuel Adobe. Ce n'est pas plus facile, plutôt le contraire...

Le principe est simple. Le concept des cue points sera expliqué plus loin dans ce texte. On peut utiliser ces cue points pour modifier un texte dynamique.

Importation d'une vidéo sur la timeline

Maintenant, nous allons examiner une façon très différente de l'utilisation de vidéos. Au lieu d'utiliser le composant "appareil de lecture" nous allons inclure la vidéo dans la timeline (chaque image vidéo sera une image). Cette méthode nous permettra de créer des vidéos avec des animations augmentées d'une façon très simple.

Intégrer une vidéo dans la timeline

Si vous intégrez une vidéo dans la timeline, vous n'avez plus besoin du composant vidéo. Mais attention: Utilisez seulement cette technique si votre vidéo est à la fois courte et petite (mauvaise qualité), sinon le fichier Flash va exploser. Une vidéo de qqs. minutes peut devenir facilement un fichier Flash de 100MB, car la vidéo comprimée sera remplacée par une animation image par image.

Par exemple, une vidéo qui dure 1 minute sera traduite en 60 X 24 images = 1440 images ! Les vidéos embarquées créeront une timeline (chronologie) très longue, mais vous pouvez choisir de lui laisser sa propre timeline. Quoi qu'il en soit, dans cet exemple, nous avons pris l'option «centaines d'images" ....

Nous allons insérer la vidéo dans l'image n°2. Nous allons également ajouter un bouton de lecture qui va sauter à l'image 2 et jouer la vidéo.

Étape 1 - fichiers FLV
  • Créez une petite vidéo (max. 1 minute, petit format).
Étape 2 - Importez la vidéo comme "embed"
  • Créez un nouveau calque et nommez-le "vidéo"
  • Insérez une nouvelle image-clé vide dans l'image 2 (puisque nous ne voulons pas que la la vidéo soit affichée dès le départ).
  • Allez-y
  • Menu File-> Import> Import Video
  • Dans la boîte de dialogue de déploiement vidéo, choisissez "Embed video in SWF and play in timeline" (intégrer la vidéo dans SWF et la jouer dans le scénario").
Dialogue de déploiement dans CS3
Étape 3 - Ajoutez des contrôles simples
  • Vous avez besoin d'au moins un bouton de lecture, mais quelques boutons supplémentaires qui permettent à un utilisateur d'accéder directement à certains images peuvent également être utiles.
  • Nous avons utilisé des boutons de type "composant":
    • Le btn_play déplace la tête de lecture à l'image 2, où la vidéo commence
    • Le "Go to Book Scene" va aller vers la trame 230.
    • Les "crédits" enverront à la fin.

Le code ActionScript:

/* This will stop Flash from playing all the frames
   User must stay in Frame 1 */
stop();

/* Associate a handler function for each button instance */

btn_credits.addEventListener(MouseEvent.CLICK, clickHandler);
btn_play.addEventListener(MouseEvent.CLICK, clickHandler);
btn_book.addEventListener(MouseEvent.CLICK, clickHandler);

/* Instead of writing a function for each button, we just create one.
   In order to understand which button was clicked, we ask from the event
   the label of the button(event.currentTarget.label).
   Then we gotoAndStop(x) to Frame 374 for Credits
   Or we can play the movie that sits in frame 2
*/
function clickHandler(event:MouseEvent):void {
	switch (event.currentTarget.label)
	{
		case "Credits" :
			gotoAndStop(609);
			break;
		case "PLAY" :
			gotoAndPlay(2);
			break;
		case "Go to Book Scene" :
			gotoAndPlay(230);
			break;
	}
}

/* This shows how to open an URL in a WebBrowser */
btn_edutech_wiki.addEventListener(MouseEvent.CLICK, GoToUrl);

function GoToUrl(event:MouseEvent):void {
	var url:String = "http://edutechwiki.unige.ch/en/Flash_video_component_tutorial";
	var request:URLRequest = new URLRequest(url);
	try
	{
		navigateToURL(request, '_blank');
	}
	catch (e:Error)
	{
		trace("Error occurred!");
	}
}


Utiliser une vidéo dans la timeline est uniquement utile si vous avez l'intention d'ajouter des animations qui se synchronisent avec la vidéo comme décrit dans l'exemple suivant. Sinon, il est préférable d'utiliser une vidéo externe avec le composant de lecture vidéo.

Résultats

Note: j'ai remarqué dans CS3 que lorsqu'on importe plus d'une fois un film, la taille du fichier grandit encore! Probablement un effet secondaire du mécanisme d'annulation. A éviter ! Si vous constatez ce problème, enregistrez le fichier avec "enregistrer sous" et la nouvelle version sera ok. Histoire pas suivie dans CS4/CS5...

Vidéos de timeline augmentées

Vous pouvez directement insérer une vidéo dans la timeline - méthode décrite ci-dessus - si vous cherchez un moyen simple de synchroniser d'autres animations avec la vidéo. Cette technique nécessite aucune connaissance de ActionScript au-delà des méthodes de navigation dans la timeline.

vidéo intégrée avec des animations

Dans cet exemple, nous avons ajouté des animations diverses (par exemple deux interpolations de mouvement et une interpolation de forme) au projet. Ci-dessous vous pouvez voir que les livres sortent d'une étagère pendant que la vidéo montre une «vraie» bibliothèque.

Ci-dessous le code de script d'action à mettre en œuvre un bouton de lecture simple, plus deux autres qui ne sont pas vraiment nécessaires, c'est à dire des boutons "crédits" et "goto ..." Tout le reste sont des animations Flash simples.

/* This will stop Flash from playing all the frames
   User must stay in Frame 1 */
stop();

/* Associate a handler function for each button instance */

btn_credits.addEventListener(MouseEvent.CLICK, clickHandler);
btn_play.addEventListener(MouseEvent.CLICK, clickHandler);

/* Instead of writing a function for each button, we just create one.
   In order to understand which button was clicked, we ask from the event
   the label of the button(event.currentTarget.label).
   Then we gotoAndStop(x) to Frame 572 for Credits
   Or we can play the movie that sits in frame 2
*/
function clickHandler(event:MouseEvent):void {
	switch (event.currentTarget.label)
	{
		case "Credits" :
			gotoAndStop(572);
			break;
		case "PLAY" :
			gotoAndPlay(2);
			break;
	}
}

/* This shows how to open an URL in a WebBrowser */

btn_edutech_wiki.addEventListener(MouseEvent.CLICK, GoToUrl);

function GoToUrl(event:MouseEvent):void {
	var url:String = "http://edutechwiki.unige.ch/en/Flash_video_component_tutorial";
	var request:URLRequest = new URLRequest(url);
	try
	{
		navigateToURL(request, '_blank');
	}
	catch (e:Error)
	{
		trace("Error occurred!");
	}
}
Résultats (il faudrait ajuster les anims pour CS5, enfin le fichier marche ...)

Utilisation des points de repère pour la navigation et pour déclencher des animations

Travailler avec des points de repère est la bonne façon pour faire interagir une vidéo avec d'autres animations. C'est une solution plus difficile que d'utiliser des vidéos imbriquées dans timeline, mais elle est plus élégante et elle est nettement moins gourmande en ressources.

Sauts vers des points de repère

(1) Implémenter des sauts vers des points de repère (cue points) insérés avec l'outil Flash / Media Encoder est assez facile si vous savez comment utiliser des boutons. Lire plus loin pour apprendre comment faire la même choses avec les points de repères de type ActionScript.

  • Insérez un composant de lecture vidéo comme ci-dessus
  • Donnez-lui un nom d'instance comme video
  • Ensuite, copiez-collez le code ci-dessous (ou programmez quelque chose de semblable)

En prime, j'ai ajouté quelques arbres invisibles (trees) qui deviennent visibles lorsque l'utilisateur accède au point de repère.

Pour adapter ce code à vos besoins: Substituez votre point de repère (donc remplacez "XPS" par "....2). Supprimez l'animation arbres, si vous voulez ...

btn_laptop.addEventListener(MouseEvent.CLICK, jumpLapTop);

function jumpLapTop(event:MouseEvent):void {
	video.seekToNavCuePoint ("XPS");
	trees.visible = true;
}
trees.visible = false;

Sans arbres:

btn_laptop.addEventListener(MouseEvent.CLICK, jumpLapTop);

function jumpLapTop(event:MouseEvent):void { 
 video.seekToNavCuePoint ("YOUR_CUEPOINT"); }
Exemple

Ce code fonctionne uniquement avec les points de repère de type navigation et que vous pouvez insérer dans l'outil Flash / Media Encoder (programme externe à Flash mais livré avec et qui change de nom suivant la version de Flash)

(2) Si vous utilisez des points de repère ActionScript (inséré avec le panneau de propriétés, l'inspecteur de composants ou dans un script), utilisez la ligne de code suivante dans CS3 ou regardez le code dans l'exemple ci-dessous.

Remplacer

video.seekToNavCuePoint ("XPS");

par quelque chose comme (voir ci-dessous):

video.findCuePoint("Flash_book", CuePointType.ACTIONSCRIPT);

Exemple complet qui contient le code pour les types:

import fl.video.*; 

trees.visible = false;

btn_laptop.addEventListener(MouseEvent.CLICK, jumpLapTop);

// --------------------- Pour cue point de navigation

function jumpLapTop(event:MouseEvent):void {
	video.seekToNavCuePoint ("XPS");
	trees.visible = true;
}

btn_book.addEventListener(MouseEvent.CLICK, jumpFlashBook);

// --------------------- Pour cue point de type "ActionScript"
function jumpFlashBook(event:MouseEvent):void {
	var cue_point:Object = video.findCuePoint("Flash_book", CuePointType.ACTIONSCRIPT);
	// trace (cue_point);
	video.seek(cue_point.time);
}

Vous devez d'abord chercher un point de repère par son nom, puis extraire son "temps" (time), et ensuite donner ce temps à la méthode seek. Le résultat n'est pas garanti, car la partie de la vidéo à afficher doit être téléchargée avant. Il peut fonctionner sur votre ordinateur local, mais pas à distance ...

Gestion d'événements de la vidéo

La mise en œuvre d'animations qui sont déclenchées par les points de repère rencontrés dans la vidéo est un peu plus difficile (voir aussi la documentation Flash 9)

Identifier les points de repère (CS3/CS4 uniquement)

Il est difficile de savoir où se trouvent les points de repère dans CS3 et CS4. Le code suivant permet d'afficher une trace de tous vos points de repère dans la fenêtre output de Flash. Pour le faire fonctionner:

  • Insérer un composant vidéo sur la scène et ajoutez une source *.flv (comme expliqué précédemment)
  • Donnez à ce composant un nom d'instance. Je l'ai appelé video_component. Si votre composant a un autre nom, vous devrez modifier le code ActionScript ci-dessous.
// You must import this class (even when you just script in the timeline !!)
import fl.video.MetadataEvent;

video_component.addEventListener(MetadataEvent.CUE_POINT, cp_listener);

function cp_listener(eventObject:MetadataEvent):void {
        trace("Elapsed time in seconds: " + video_component.playheadTime);
        trace("Cue point name is: " + eventObject.info.name);
        trace("Cue point type is: " + eventObject.info.type);
}

Lorsque vous jouez la vidéo *. flv, vous pouvez voir ce genre de messages dans la fenêtre de sortie:

Elapsed time in seconds: 7.485
Cue point name is: palm_tree
Cue point type is: event
Elapsed time in seconds: 9.888
Cue point name is: books
Cue point type is: navigation
Elapsed time in seconds: 20.52
Cue point name is: missing_manual
Cue point type is: event
Elapsed time in seconds: 26.188
Cue point name is: XPS
Cue point type is: navigation
Elapsed time in seconds: 31.674
Cue point name is: ubuntu
Cue point type is: event

Identification de points de repère dans CS5

  • Insérez la vidéo dans un composant vidéo
  • Cliquez sur le composant
  • Examinez le panneau "properties" (tout en bas ...)

Préparation de quelques clips

Nous allons d'abord créer quelques clips Flash:

  • Appuyez sur CTRL-F8 (menu Insert-> New symbol) et sélectionnez "movie clip"
  • Créez des animations pour chaque clip !
  • Alternativement, vous pouvez importer des clips fait ailleurs.

Une fois que vous en avez une ou plusieurs de ces animations:

  • Créez une instance de chaque clip sur la scène et donnez-lui un nom d'instance, par exemple
movie_books
  • Stopper chaque occurrence de clip et rendez certains invisibles, par exemple:
movie_books.stop();
movie_books.visible = false;

Déclencher des clips avec des points de repère

Au cœur de la gestion des points de repère existe un gestionnaire d'événements (pas de surprise, on utilise le même principe que pour l'interaction utilisateur avec des boutons).

La fonction cuepoint_listener comprend une instruction switch qui traite chaque événement qu'il reçoit.

  • Pour la plupart de ces événements nous allons juste jouer un clip. Si le clip a été caché, nous le rendons visible, par exemple
movie_books.visible = true;
movie_books.play ();
  • Aussi, nous devons stopper des clips, voire les rendre invisibles à nouveau (comme vous le souhaitez ....)

Si vous voulez de la musique, vous pouvez par exemple importer un fichier audio dans la bibliothèque, puis l'exporter pour ActionScript (clic-droit sur celle-ci). Mémorisez son nom de classe. Sinon, vous pouvez importer des sons de manière dynamique à partir de fichiers externes, procédure expliquée dans Flash tutoriel drag and drop.

Voici donc le code complet que vous pouvez trouver dans le fichier *.fla de cet exemple:

import fl.video.MetadataEvent;
// Stop all the animations of the various movie clips
// Make the bookshelf invisible
movie_trees.stop();
movie_books.stop();
movie_books.visible=false;
movie_penguin.stop();
movie_manual.stop();
movie_manual.visible=false;

// This is a sound of the class music
// Was defined by exporting the music file in the library
var music:Music = new Music();
var volume = new SoundTransform(0.2, 0);

// Add a cuepoint for the end and which is not in the flv movie
video_component.addASCuePoint(40, "End");

video_component.addEventListener(MetadataEvent.CUE_POINT, cuepoint_listener);

function cuepoint_listener(obj:MetadataEvent):void {
	switch (obj.info.name)
	{
		case "palm_tree" :
			movie_trees.play();
			break;
		case "books" :
			movie_trees.stop();
			movie_books.visible=true;
			movie_books.play();
			break;
		case "missing_manual" :
			movie_books.stop();
			movie_books.visible=false;
			movie_manual.visible=true;
			movie_manual.play();
			break;
		case "XPS" :
			movie_manual.stop();
			movie_manual.visible=false;
			var song = music.play(0,3,volume);
			break;
		case "ubuntu" :
			movie_penguin.play();
			break;
		case "End" :
			// song.stop();
			movie_penguin.stop();
			movie_penguin.visible=false;
			movie_books.visible=false;
	}
}

/* This shows how to open an URL in a WebBrowser */
btn_edutech_wiki.addEventListener(MouseEvent.CLICK, GoToUrl);

function GoToUrl(event:MouseEvent):void {
	var url:String = "http://edutechwiki.unige.ch/en/Flash_video_component_tutorial";
	var request:URLRequest = new URLRequest(url);
	try
	{
		navigateToURL(request, '_blank');
	}
	catch (e:Error)
	{
		trace("Error occurred!");
	}
}
  • Dans l'exemple ci-dessus, à chaque point de repère l'animation d'avant s'arrête et/ou devient invisible et la nouvelle animation se déclenche (ex. le point de repère "books" stoppe l'animation du palmier et déclenche l'animation de la bibliothèque. Si nous voulons que l'animation s'arrête avant la prochaine, nous pouvons créer un point de repère par exemple "palm_trees_end" et dans le switch il faut rajouter les lignes suivantes:
                 case "palm_tree_end" :
		 movie_trees.stop();
	         break;

Utilisation de la seekbar

Lorsque vous créez des événements qui se déclenchent lorsqu'on détecte un cue point, si l'utilisateur utilise la seekbar, vous risquez qu'il puisse sauter le cue point et que votre animation/fonction ne soit pas activée. Pour pouvoir détecter le fait que l'utilisateur ait utilisé la seekbar, il faut utiliser l'événement SEEKED. Ici myMovie est le nom de l'instance de FLVPlayback.

myMovie.addEventListener(fl.video.VideoEvent.SEEKED, myfunction);

Ensuite, si on veut marquer à quel chapitre on se trouve (et que par exemple l'utilisateur est passé du début de la vidéo à la moitié du chapitre 2), on doit aller chercher le cue point qui précède l'endroit où l'on se trouve (dans ce cas le cue point qui indique le début du chapitre 2). On va utiliser la méthode findNearestCuePoint.

myMovie.addEventListener(fl.video.VideoEvent.SEEKED, myfunction);

function myfunction(event:fl.video.VideoEvent):void
{
   var previous_cue_point = myMovie.findNearestCuePoint(myMovie.playheadTime).name;
   //faire quelque chose en fonction de la valeur de cette variable
}

Cette fonction va donc mettre dans la variable previous_cue_point le nom du cue point. On peut ensuite, par exemple, utiliser un "switch" pour définir comment réagir en fonction du cue point qu'on vient de dépasser.

Exemple

Exercice

Adaptez l'exemple suivant: Regardez d'abord ceci: flash-cs5-video-cue-événements-exercise.html

Télécharger

import fl.video.MetadataEvent;

/* Instructions:
1. Add a *.flv video to the video component (edit with component inspector)
2. Use a viewer to analyse the video and write down at least 3 moments
   you want to declare as cuepoints. You need a name and seconds
3. Fix the code below:
  a. Add cue points below or in the component inspector
  b. stop all your animations, make them invisible if you like
  c. Add "if clauses" in cuepoint_listener
  d. Edit the jump1 function
*/

// 3.a. Add a cuepoint with ActionScript, else use the component inspector

video_component.addASCuePoint(10.5, "wonder");

// 3.b. Stop all the animations of the various movie clips
// 1. Add more animations here and kill the example anim
// 2. Your embedded clips must have an instance name in the Flash Scene
// copy/paste the two following lines, i.e. add anim2 etc. and adapt

anim1.visible=false;
anim1.stop();

// Optional: Add sound from a sound file in the library. 
// Was defined by exporting the music file in the library to AS3
var guitar_music = new Guitarmusic();
var volume=new SoundTransform(0.2,0);

// 3.c Add more if clauses to the cuepoint_listener function
video_component.addEventListener(MetadataEvent.CUE_POINT, cuepoint_listener);

function cuepoint_listener(event) {

	// get the event name
	var event_name = event.info.name;

	// the next three lines will just print out information to the console
	// you later can remove these if you want
	trace("Elapsed time in seconds: " + video_component.playheadTime);
	trace("Cue point name is: " + event_name);
	trace("Cue point type is: " + event.info.type);

	// deal with the cue events
	if (event_name == "wonder") {
		anim1.visible=true;
		anim1.play();  // should be stopped at some point ....
		guitar_music.play();
	}

	/* remove this start comment line
	if (event_name == "something") {
	anim2.visible=true;
	anim2.play();
	}
	remove this end comment line */
}

// 3.d - Adapt to your cuepoint
button1.addEventListener(MouseEvent.CLICK, jump1);

function jump1(event) {
	// next line only works if you created cue points 
	// of type navigation with the video encoder
	// video_component.seekToNavCuePoint("wonder");
	video_component.seek (video_component.findCuePoint("wonder","actionscript").time);
	anim1.visible=true;
	anim1.play();
}

Vidéos interactives déployées dans le serveur (tecfa ou autre)

Au moment où vous aurez terminé votre tâche, il vous faudra mettre votre vidéo sur un serveur web. Afin de ne pas rencontrer de mauvaises surprises au moment de visionner votre ficher *.swf, il vous faudra faire attention à déposer tous les fichiers donc le fichier *.swf, le fichier vidéo, le fichier .xml (relatif aux sous-titres de votre vidéo) sur le serveur.

Par exemple :

http://tecfaetu.unige.ch/etu-maltt/qwerty/____/stic/stic-1/ex5/video.swf
http://tecfaetu.unige.ch/etu-maltt/qwerty/____/stic/stic-1/ex5/timed-texte.xml
http://tecfaetu.unige.ch/etu-maltt/qwerty/____/stic/stic-1/ex5/video.flv

De cette manière votre fichier *.swf démarrera sans problème la vidéo avec le "timed text".

Liens

Les entrées manuelles

(Pour CS3, nom de liens traduit par google ..... à refaire ....- Daniel K. Schneider 20 octobre 2010 à 23:43 (CEST))

Pour les designers (CS3)
Utilisation du composant FLVPlayback
Utilisation du composant FLVPlayback sous-titrage (Flash CS3 Documentation).
Cue Points CS3
Pour les designers (CS5)
Using the FLVPlayback Component
Using the FLVPlayback Captioning Component
Working with video cue points

Ci-dessous quelques liens plus techniques qui jusqu'à présent ne sont pas vraiment beaucoup utilisés dans ce tutoriel.

Documentation de présentation pour les programmeurs ActionScript (Flash 9)

Note: les URL (semble être instable si elles ne fonctionnent pas aller à la programmation ActionScript 3.0

Utilisation de la vidéo (Flash CS3 documentation ou de la programmation 3,0)
Utilisation des points de repère
Rédaction méthodes de rappel pour onCuePoint et onMetaData
Définir la propriété du client de l'objet NetStream à un objet
Étendre la classe NetStream et ajouter des méthodes pour gérer les méthodes de rappel
Documentation pour les programmeurs ActionScript (Flash 9)
vidéo-paquet detail.html
MetadataEvent.html
Composant FLVPlayback . La classe pour le composant FLVPlayback vido.
AS3 FLVPlayback documentation
VideoPlayer.html . La classe FLVPlayback encapsule la classe VideoPlayer.
NetStream.html . Celui-ci a l'événement onCuePoint.
Timed Text (TT)

Tutoriels

Pour les concepteurs
Pour les programmeurs

Artwork

Toutes les illustrations (cliparts) sont de:

  • http://www.openclipart.org/ (désolé je n'ai pas noté les noms des créateurs). Ce sont des fichiers SVG dans le domaine public J'ai importé via Illustrator (je ne peux vraiment pas comprendre pourquoi Flash ne supporte pas les SVG en quelque sorte ...)

Sound (sauf piste de voix sur les vidéos) est de:

Vidéos:

  • Je les ai faites moi-même
  • Vous pouvez télécharger des vidéos depuis Internet (assurez-vous que le droit d'auteur vous permet de le faire). Obtenir des vidéos de sites tels que YouTube n'est pas facile, vous devez soit télécharger un programme ou utiliser un site web spécialisé pour cela (attention aux virus et à la porno). Vous pouvez aussi creuser dans les fichiers temporaires de votre ordinateur.
  • Pour télécharger des videos YouTube et autres sites, j'utilise cette extension Firefox: https://addons.mozilla.org/en-US/firefox/addon/3006

Recherche de videos avec Google:

  • Devenu inutile. Il fut un temps où on pouvait chercher des types de video (comme "mp4") etc. et télécharger. A l'air de ne plus marcher :( - Daniel K. Schneider 20 octobre 2010 à 23:59 (CEST).