cs_phobus
Messages postés8Date d'inscriptionmardi 13 avril 2004StatutMembreDernière intervention28 avril 2009
-
27 avril 2009 à 23:13
cs_phobus
Messages postés8Date d'inscriptionmardi 13 avril 2004StatutMembreDernière intervention28 avril 2009
-
28 avril 2009 à 14:27
Salut à tous,
Voici mon problème :
Je dois réaliser une animation flash sur la base d'une vidéo en green key (donc détourée et importée dans flash avec couche alpha).
Dans cette vidéo, le protagoniste désigne du doigt quatre vignettes (boutons). Chacune de ces vignettes est un lien vers une vidéo correspondant à un thème particulier.
Une fois la vidéo de présentation des vignettes terminée, elle cède la place à une vidéo "d'attente" dans lequel la personne regarde distraitement à gauche et à droite, avant d'inviter l'utilisateur à cliquer sur une vignette s'il n'a pas encore tout visionné.
Pour gérer cela, étant débutant en actionscript, j'ai téléchargé le script
"ENCHAINEMENT FLV SANS XML PAR BOUTON AVEC FULLSCREEN+FLVPLAYBACK UNIQUE+AS3"
automatiquement la lecture de la vidéo de présentation et affiche ensuite la vidéo d'attente
Malheureusement, j'ai un souci :
1°) Je souhaiterais qu'après chaque capsule vidéo (vidéos accessibles depuis les vignettes) se lance automatiquement la vidéo "d'attente". Dans le source téléchargé (en actionscript 3.0), chaque bouton "vignette" appelle une fonction de correspondant à la capsule que l'on veut visionner. Voici une partie du code :
mainvid.play("flv/presentation_vignettes.flv")
but1.addEventListener(MouseEvent.CLICK, c1);
function c1 (pEvt:Event):void
{
player.visible=true; // player est le FLVPlayback des vidéos "capsule" donc des vidéos accessibles par les vignettes
mainvid.visible=false; // mainvid est le FLVPlayback de la vidéo de présentation et de la vidéo d'attente qu'on arrête pour lancer la capsule sélectionnée.
mainvid.stop();
player.play("flv/capsule1.flv");
}
mainvid.addEventListener("complete", attente);
function attente (pEvt:Event):void
{
mainvid.play("flv/attente.flv");
}
Comment peut-on, à partir de la fonction c1, détecter la fin de la vidéo du composant "player" et commander la lecture de celle du composant "mainvid" via la fonction attente
cs_Girou
Messages postés1203Date d'inscriptionlundi 10 mars 2003StatutMembreDernière intervention23 juillet 20092 28 avril 2009 à 11:59
Bonjour,
pas sur que ca va aider, mais utilise plutot les constantes pour les Event video (comme tu le fais pour MouseEvent)
mainvid.play("flv/presentation_vignettes.flv")
but1.addEventListener(MouseEvent.CLICK, c1);
function c1 (pEvt:
MouseEvent
):void
{
player.visible=true; // player est le FLVPlayback des vidéos "capsule" donc des vidéos accessibles par les vignettes
mainvid.visible=false; // mainvid est le FLVPlayback de la vidéo de
présentation et de la vidéo d'attente qu'on arrête pour lancer la
capsule sélectionnée.
mainvid.stop();
player.play("flv/capsule1.flv");
}
//mainvid.addEventListener("complete", attente);
player
.addEventListener(videoEvent.COMPLETE, attente);
function attente (pEvt:videoEvent):void
{
mainvid.play("flv/attente.flv");
}
cs_phobus
Messages postés8Date d'inscriptionmardi 13 avril 2004StatutMembreDernière intervention28 avril 2009 28 avril 2009 à 12:17
J'ai fait la modif.
C'est certainement meilleur au niveau du code, mais malheureusement, ça ne résout pas mon problème.
A la compilation, Flash me dit : "TypeError: Error #1010: Un terme n'est pas défini et n'a pas de propriété."
J'imagine que cela est dû au fait qu'il ne reconnait pas le composant player en dehors de des fonctions dans lesquelles il est utilisé. Je ne parviens pas à trouver un moyen pour que player soit également accessible en dehors de ces fonctions "boutons".
cs_phobus
Messages postés8Date d'inscriptionmardi 13 avril 2004StatutMembreDernière intervention28 avril 2009 28 avril 2009 à 12:57
Merci de tes réponses !
En fait, le code que j'ai posté se trouve dans le calque "boutons".
Dans un autre calque, appellé player, se trouve ce que je pense être la définition de player ainsi que des paramètres concernant sa position x et y, sa taille et d'autres paramètre comme addchild(player) (et celui là, j'avoue que je n'y comprends rien, même après avoir consulté l'aide de Flash).
Voici le code en question :
//on importe la classe fl.video.*
//pour la prise en charge des attributs vidéo
import fl.video.*;
//création de l'objet flvplayback
var player = new FLVPlayback();
//emplacement du player
player.x = 10;
player.y = 10;
//dimension du player
player.width = 320;
player.height = 280;
//generation de l'occurence 'player' pour l'actionscript
addChild(player);
//skin du player
//(il doit etre exporter ou coller dans le meme repertoire
player.skin = "SkinUnderAll.swf"
//skin disparait= vrai-faux(true,false)
player.skinAutoHide= true;
//player demarre = vrai-faux(true,false)
player.autoPlay= false;
//player visible = vrai-faux(true,false)
player.visible=false;
A noter cependant que le composant mainvid que j'utilise dans le script se trouvant sur le calque bouton n'a pas été défini préalablement comme l'a été player mais qu'il fonctionne à la fois dans le programme principal et dans les fonctions. mainvid est donc le nom d'occurence de mon FLVPlayback que j'ai glissé sur la scène.
Désolé de ne pas avoir pensé à faire ces précisions plus tôt, en fait. Je suppose que c'est important.
player semble donc s'éteindre en sortie de fonction. Je suppose que si je parvenais à le faire coexister en fin de fonction avec mainvid, je pourrais alors utiliser addEventListener pour écouter player et déterminer la fin de la vidéo, ce qui enchainerait ensuite la vidéo "attente" dans mainvid.
Vous n’avez pas trouvé la réponse que vous recherchez ?
A la compilation, flash me dit aussi "Un terme n'est pas défini et n'a pas de propriété.".
Du coup, je crois que je n'ai absolument rien compris à la création d'objet, puisque je ne vois rien dans le code qui fasse la différence entre l'appel d'une occurence dans le programme principal et celui d'un objet qui ne fonctionne pas dans le programme principal, mais fonctionne après appel d'une fonction avec un intermédiaire de type addEventListener.
Quoi qu'il en soit, j'ai modifié mon code en n'utilisant plus que l'occurence (FLVPlayback) mainvid avec les url de chaque vidéo. Là, ça fonctionne.
mainvid.play("flv/presentation_vignettes.flv")
but1.addEventListener(MouseEvent.CLICK, c1);
function c1 (pEvt:
MouseEvent
):
void
{
mainvid.visible =false;// On masque la vidéo en cours de lecture
mainvid.stop; // Et on arrête sa lecture
mainvid.visible.play("flv/capsule1.flv"); // On lance la lecture de la vidéo correspondant à notre bouton 1
}
// Maintenant, le addEventListener détecte la fin de la vidéo et appelle la fonction "attente" ...
mainvid .addEventListener(videoEvent.COMPLETE, attente);
// ... qui balance la vidéo d'attente,jusqu'à ce que l'utilisateur décide de cliquer sur une autre vidéo ou quitte la page
function attente (pEvt:videoEvent):void
{
mainvid.play("flv/attente.flv");
}
Mais je me dis que c'est un peu trop simple. Si dans le script original, l'auteur utilise des objets plutôt que des occurences, c'est pour une bonne raison, je suppose, non ?
cs_phobus
Messages postés8Date d'inscriptionmardi 13 avril 2004StatutMembreDernière intervention28 avril 2009 28 avril 2009 à 14:27
Oui, c'est probablement vrai...
Ceci dit, est-ce que tu pourrais m'expliquer ce qui fait que player (contenant un objet donc) ne fonctionne que quand il est appelé dans la fonction c1 ?
Je pense que si j'arrive à comprendre ça, j'aurai au moins une notion sur l'utilisation des variables d'objet.