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();
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();
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 ...
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)
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 ?
{
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 ...
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 ...
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
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);
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 :
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
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 ;=)
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 ?)