Bonjour à toutes et à tous,
Ne voyant nulle part dans les sous-forums l'emplacement pour parler du langage web Flash (ici dans mon cas, en version ActionScript 3), je viens poster mon topic ici. Merci de m'excuser en cas d'erreur...
Voilà mon problème et ma question. C'est un poil compliqué à expliquer, aussi vais-je essayer de faire le plus clair et précis possible.
Je suis en train de réaliser un site dynamique en php 5, lié à une base de données. Je travaille sous Mac OSX et la suite Adobe CS3 : Dreamweaver, Flash et Photoshop, avec MAMP installé et PhpMyAdmin pour gérer la BDD.
Ma page index, l'accueil du site donc, offre une barre de navigation comportant 5 destinations internes, qui dirigent en fait vers la même page qui se remplit alors de données différentes en fonction des boutons cliqués depuis la barre de navigation. OK ?
C'est dans cette page de destination que mes animations Flash apparaissent. En fait, c'est la même structure d'animation qui s'affiche, à l'exception du fait que sa vidéo FLV interne, son audio et la dernière image du Flash lui-même, changent en fonction des données appelées pour remplir la page php.
Par exemple :
Si on a cliqué sur le bouton A dans la page d'Accueil, la page A' s'ouvre avec les données A'', dont le flash donc. La video FLV A se lance alors dont l'audio souhaite la Bienvenue dans la rubrique A et à la fin du FLV, on va à la dernière image de l'animation, et on affiche un bouton flash A''' vers une seconde page interne.
Si on a cliqué sur le bouton B, idem etc, pour qu'alors le FLV B du Flash souhaite la Bienvenue dans la Rubrique B avec le bouton Flash de dernière frame dirigeant vers la 3ème page interne.
Etc pour toutes les rubriques. Bref : le principe même des sites dynamiques et du php.
Maintenant, voilà ce que je voudrais faire :
Le problème est que dès que l'on appelle la page 2 interne depuis la page index, les animations Flash se jouent. Mais si pour une rubrique ça peut être impactant et sympathique, pour toutes ça risque fort d'être pénible. Alors pour palier ce premier problème, un préload charge le fichier Flash pour se stopper sur une première image qui affiche un bouton PLAY, avant le lancement de la vidéo FLV. Ainsi pas de lancement du FLV en automatique : tout est décidé par l'internaute.
Cependant, à partir du moment où une page a été vue et l'animation jouée, il faudrait que dans l'éventualité où le visiteur reviendrait sur cette page pour la relire (car cette page interne est très importante en terme d'infos), l'animation Flash soit reconnue comme ayant été déjà jouée et qu'elle affiche directement sa dernière frame avec le bouton vers la page 3. Suis-je clair ? J'espère.
C'est pourquoi j'ai utilisé le SharedObject de Flash : sorte de cookie façon Flash : ainsi si le sharedObject de l'animation A a été crée et enregistré, c'est que l'animation A a été déjà vue, donc on affiche la dernière frame du Flash A et on stoppe dessus.
Voici le code :
Résultat :
Ca fonctionne en ce qui concerne l'affichage de la dernière frame. Donc le principe de variable "déjà vue" est bien pris en compte. Seulement hélas, soudain, on entend la son audio de la vidéo FLV du flash, en voix-off...
Première Question : POURQUOI ???
Deuxièmement : j'ai un bouton Rejouer à la fin de l'animation : il renvoit en fait à la frame où est placé le FLVPlayblack de la vidéo FLV, avec un goToAndPlay(n°frame) et nomOccurrenceFLVPlayback.play().
Tant que je ne mettais pas le code SharedObject, ce bouton "Rejouer" fonctionnait parfaitement : mais maintenant que le SharedObject est inscrit, il ne fonctionne plus : quand il renvoit au début du FLV, aussitôt on revient à la dernière frame du Flash, sur ce même bouton "Rejouer"...
Ma question est donc simple : comment peut-on faire alors, en cliquant sur ce bouton Rejouer, pour effacer le SharedObject pour pouvoir rejouer l'animation comme si elle n'avait pas été vue ?? J'ai entendu parlé d'un "clear" ou d'un "close" mais rien n'était clair justement.
Voilà, vous savez tout. J'espère sincèrement que j'ai été concis et que vous comprendrez que j'ai essayé de faire le plus court possible pour expliquer un tel problème...
Merci quoiqu'il en soit à toutes et tous ceux qui voudront qui voudront bien m'aider.
Bien cordialement,
Neum
Modifié par Neum (20 Apr 2010 - 12:26)
Ne voyant nulle part dans les sous-forums l'emplacement pour parler du langage web Flash (ici dans mon cas, en version ActionScript 3), je viens poster mon topic ici. Merci de m'excuser en cas d'erreur...
Voilà mon problème et ma question. C'est un poil compliqué à expliquer, aussi vais-je essayer de faire le plus clair et précis possible.
Je suis en train de réaliser un site dynamique en php 5, lié à une base de données. Je travaille sous Mac OSX et la suite Adobe CS3 : Dreamweaver, Flash et Photoshop, avec MAMP installé et PhpMyAdmin pour gérer la BDD.
Ma page index, l'accueil du site donc, offre une barre de navigation comportant 5 destinations internes, qui dirigent en fait vers la même page qui se remplit alors de données différentes en fonction des boutons cliqués depuis la barre de navigation. OK ?
C'est dans cette page de destination que mes animations Flash apparaissent. En fait, c'est la même structure d'animation qui s'affiche, à l'exception du fait que sa vidéo FLV interne, son audio et la dernière image du Flash lui-même, changent en fonction des données appelées pour remplir la page php.
Par exemple :
Si on a cliqué sur le bouton A dans la page d'Accueil, la page A' s'ouvre avec les données A'', dont le flash donc. La video FLV A se lance alors dont l'audio souhaite la Bienvenue dans la rubrique A et à la fin du FLV, on va à la dernière image de l'animation, et on affiche un bouton flash A''' vers une seconde page interne.
Si on a cliqué sur le bouton B, idem etc, pour qu'alors le FLV B du Flash souhaite la Bienvenue dans la Rubrique B avec le bouton Flash de dernière frame dirigeant vers la 3ème page interne.
Etc pour toutes les rubriques. Bref : le principe même des sites dynamiques et du php.
Maintenant, voilà ce que je voudrais faire :
Le problème est que dès que l'on appelle la page 2 interne depuis la page index, les animations Flash se jouent. Mais si pour une rubrique ça peut être impactant et sympathique, pour toutes ça risque fort d'être pénible. Alors pour palier ce premier problème, un préload charge le fichier Flash pour se stopper sur une première image qui affiche un bouton PLAY, avant le lancement de la vidéo FLV. Ainsi pas de lancement du FLV en automatique : tout est décidé par l'internaute.
Cependant, à partir du moment où une page a été vue et l'animation jouée, il faudrait que dans l'éventualité où le visiteur reviendrait sur cette page pour la relire (car cette page interne est très importante en terme d'infos), l'animation Flash soit reconnue comme ayant été déjà jouée et qu'elle affiche directement sa dernière frame avec le bouton vers la page 3. Suis-je clair ? J'espère.
C'est pourquoi j'ai utilisé le SharedObject de Flash : sorte de cookie façon Flash : ainsi si le sharedObject de l'animation A a été crée et enregistré, c'est que l'animation A a été déjà vue, donc on affiche la dernière frame du Flash A et on stoppe dessus.
Voici le code :
//on import la classe qui gere les sharedObject
import flash.net.SharedObject;
//on recupere le sharedObject que l'on souhaite
var so:SharedObject = SharedObject.getLocal("nom du SharedObject anim A ou B ou C etc...");
//on recupere la valeur que l'on veux
var dejaVu:Boolean = so.data.isVue
//Date deja vue on va a la fin
if(dejaVu) gotoAndStop(this.totalFrames)
//on stocke dans le sharedObject le fait que l'on a deja vue l'animation
so.data.isVue = true
//on dit au sharedObject d'enregistrer les changements
so.flush()
Résultat :
Ca fonctionne en ce qui concerne l'affichage de la dernière frame. Donc le principe de variable "déjà vue" est bien pris en compte. Seulement hélas, soudain, on entend la son audio de la vidéo FLV du flash, en voix-off...
Première Question : POURQUOI ???
Deuxièmement : j'ai un bouton Rejouer à la fin de l'animation : il renvoit en fait à la frame où est placé le FLVPlayblack de la vidéo FLV, avec un goToAndPlay(n°frame) et nomOccurrenceFLVPlayback.play().
Tant que je ne mettais pas le code SharedObject, ce bouton "Rejouer" fonctionnait parfaitement : mais maintenant que le SharedObject est inscrit, il ne fonctionne plus : quand il renvoit au début du FLV, aussitôt on revient à la dernière frame du Flash, sur ce même bouton "Rejouer"...
Ma question est donc simple : comment peut-on faire alors, en cliquant sur ce bouton Rejouer, pour effacer le SharedObject pour pouvoir rejouer l'animation comme si elle n'avait pas été vue ?? J'ai entendu parlé d'un "clear" ou d'un "close" mais rien n'était clair justement.
Voilà, vous savez tout. J'espère sincèrement que j'ai été concis et que vous comprendrez que j'ai essayé de faire le plus court possible pour expliquer un tel problème...
Merci quoiqu'il en soit à toutes et tous ceux qui voudront qui voudront bien m'aider.
Bien cordialement,
Neum
Modifié par Neum (20 Apr 2010 - 12:26)