on_drag_on
Messages postés1236Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention 6 octobre 2010
-
5 mai 2009 à 18:30
on_drag_on
Messages postés1236Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention 6 octobre 2010
-
7 mai 2009 à 19:41
Bonjour à tous,
Je suis entrain de créer une classe pour un lecteur vidéo avec chargement XML. Jusque-là tout fonctionne. Maintenant j'ai créé un clip bar de classe Bar dans laquelle est imbriqué un clip play_btn.
Je crée donc une fonction functionPlay et je place ma méthode play() dedans. Là il me sort une erreur: Un terme n'est pas défini et n'a pas de propriété. at Main/functionPlay().
Alors mes questions sont: sauriez-vous m'expliquer le pourquoi de cette erreur et, étant donné que je débute dans ces classes et que j'ai encore beaucoup de peine avec la logique AS3,est-ce que mon code vous semble "propre" ?
{
private var xmlURL:URLRequest = new URLRequest("videos.xml");
private var xmlLoader:URLLoader = new URLLoader(xmlURL);
private var player:FLVPlayback = new FLVPlayback();
private var bar:Bar = new Bar();
gremlins7
Messages postés380Date d'inscriptionmardi 29 avril 2003StatutMembreDernière intervention28 décembre 2009 5 mai 2009 à 22:40
Ben si ce que je t'ai dis marche très bien :
Tu avait fait une erreur lorsque tu construit l'objet xml, c'etait pas var xml:XML=new XML(pEvt.target.data); mais seulement xml = new XML(pEvt.target.data);
Voila le code complet & corrigé (et du coup merci pour le code)
package
{
private var xmlURL:URLRequest = new URLRequest("videos.xml");
private var xmlLoader:URLLoader = new URLLoader(xmlURL);
private var player:FLVPlayback = new FLVPlayback();
private var xml:XML = new XML();
private var bar:Bar = new Bar();
on_drag_on
Messages postés1236Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention 6 octobre 2010 5 mai 2009 à 19:22
Si tu veux si je n'ai qu'un objet FLVPlayback dans ma biblio et que je place :
var xml:XML = new XML (pEvt.target.data);
var xmlList:XMLList = xml.elements();
player.play(xmlList[1].@stream);
Tout fonctionne.
Maintenant j'ajoute une barre de lecture (clip: bar) dans ma biblio. Dans cette barre de lecture j'ajoute mes clips play, pause, stop etc... je lie cette barre à l'AS en nommant sa classe Bar. J'ajoute une fonction "functionPlay" et je déplace les instructions ci-dessus dans cette fonction et là ça me génère l'erreur ...
gremlins7
Messages postés380Date d'inscriptionmardi 29 avril 2003StatutMembreDernière intervention28 décembre 2009 5 mai 2009 à 19:28
Ok je crois savoir:
donc ton objet bar est dans la bibliotheque...
verifie si dans les propriètes de ton objet bar si l'option exporter pour actionscript est bien cochée, sinon choisi une classe mère movieclip ou sprite ou...(par defaut je crois qu'il met moviclip)
gremlins7
Messages postés380Date d'inscriptionmardi 29 avril 2003StatutMembreDernière intervention28 décembre 2009 5 mai 2009 à 19:39
On pardon, j'ai repondu un peu vite...merci de ne pas tenir compte de mon precedant post...
donc quand ton FLVPlayback est dans la biblio pas de soucis, et lorsque tu essaye de l'ecrire en fonction ça coince...mais tu as bien du mettre du code derrière tes boutons play, pause, stop ? Si oui c'est quoi ?
on_drag_on
Messages postés1236Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention 6 octobre 2010 5 mai 2009 à 19:44
Merci déjà de prendre de ton temps ;)
En fait si je fais:
public class Main extends MovieClip
{
private var xmlURL:URLRequest = new URLRequest("videos.xml");
private var xmlLoader:URLLoader = new URLLoader(xmlURL);
private var player:FLVPlayback = new FLVPlayback();
{
var xml:XML = new XML (pEvt.target.data);
var xmlList:XMLList = xml.elements();
player.play(xmlList[1].@stream);
player.width = 480;
player.height = 270;
addChild(player);
}
Là j'ai bien ma vidéo qui se lance.
Si j' ajoutes ce que j'ai dit plus haut ça me génère l'erreur citée ...
on_drag_on
Messages postés1236Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention 6 octobre 2010 5 mai 2009 à 19:47
P.S non j'ai pas encore mis le code pour pause stop etc... vu que déjà play ne fonctionne pas.
Si je trace(bar.play_btn); j'ai bien un objet movieclip je ne pense pas que ce soit un prob de ciblage (quoique) je penche plus pour une mauvaise ordonnance de mon code ...
gremlins7
Messages postés380Date d'inscriptionmardi 29 avril 2003StatutMembreDernière intervention28 décembre 2009 5 mai 2009 à 19:49
Peu être que tu clique alors que le load n'est pas fini et que donc xmlList[1] n'est pas encore defini, pour eliminer cette erreur eventuelle deplace l'ajout de l'evenement click uniquement lorsque le load est fini
gremlins7
Messages postés380Date d'inscriptionmardi 29 avril 2003StatutMembreDernière intervention28 décembre 2009 5 mai 2009 à 20:09
Des trois lignes suivantes de functionPlay :
var xml:XML = new XML (pEvt.target.data);
var xmlList:XMLList = xml.elements();
player.play(xmlList[1].@stream);
c'est laquelle qui provoque l'erreur ?
Au fait pourquoi tu fais AddChild(Player) ?
PS : tu dois pouvoir l'ecrire en une ligne du style player.play(xml.elements()[1].@stream);
gremlins7
Messages postés380Date d'inscriptionmardi 29 avril 2003StatutMembreDernière intervention28 décembre 2009 5 mai 2009 à 20:53
Ca y est j'ai trouvé, ça doit être ça à 95%
ta fonction functionPlau prend en MouseEvent en paramètre (pEvt.MousEvent), or dans cette fonction la ligne :
on_drag_on
Messages postés1236Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention 6 octobre 2010 5 mai 2009 à 21:06
Oui ça me parait juste, donc en fait c'est plus logique de le placer dans la fonction xmlLoaded, ce que j'avais fais au début, vu que cette fonction est écoutée par xmlLoader qui lui est un event ... mais dans ce cas comment récupérer le 1er noeud dans ma fonction play car évidement si je fais du coup:
public function functionPlay(pEvt:MouseEvent):void
{
player.play(xml.elements()[1].@stream);
}
Me dit qu'il trouve pas la propriété xml ...
@+.
telov.ch
on_drag_on
Messages postés1236Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention 6 octobre 2010 5 mai 2009 à 22:46
Yes ! T'es un champion ! :)
T'inquiètes, pour le code je le poserais ici d'ici quelques jours (quand j'aurais fini) et je manquerais pas d'ajouter un grand remerciement à ton égard !
Merci ;=)
on_drag_on
Messages postés1236Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention 6 octobre 2010 6 mai 2009 à 23:14
Re,
Plus qu'un détail et je poste ^^, comment puis-je dire: si les noeuds parcouru = au total du nombre de noeuds contenu dans le xml, alors on va pas plus loin ?
(Suis-je clair ?)