Lecteur flv + coverflow playlist - comment faire le lien ? [Résolu]

Signaler
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
-
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
-
Salut à toutes et à tous,

une fois de plus je me retrouve confronté à un problème que j'ai du mal à résoudre : j'ai modifié un lecteur flv qui marche nickel, maintenant je suis en train d'essayer d'y ajouter une playlist sous forme de coverflow, et bien sûr les ennuis commencent.
Bref je poste au cas où quelqu'un qui lirait mon script aurait la solution pour relier mon lecteur flv à la playlist coverflow.
De mon côté je continue mes essais.

Voici le code du lecteur flv :
video = "";

Stage.displayState = "normal";
btn_normal._visible = false;
btn_normal.enabled = false;

btn_pause._visible = false;
volumeBar.icnMute._visible = 0;
var enPause:Boolean = false;

var newConnect:NetConnection = new NetConnection();
newConnect.connect(null);
var newStream:NetStream = new NetStream(newConnect);

this.createEmptyMovieClip("snd", 0);
snd.attachAudio(newStream);
audio = new Sound(snd);
audio.setVolume(100);

_root.movie.attachVideo(newStream);

newStream.onMetaData = function(newMeta){
duree = newMeta.duration;
}

function recupBytes(newBl:NetStream){
 bytesVisible = newBl.bytesLoaded/newBl.bytesTotal*100;
_root.bytesBar._xscale = bytesVisible;
var Atime:Number = newBl.time;
navigBar._xscale = Atime/duree*100;
}

var newInterval:Number = setInterval(recupBytes, 100, newStream);


newStream.play(video);
newStream.pause(true);

this._root.preplay.onRelease = function(){
_root.preplay._visible = false;
btn_play._visible = false;
btn_pause._visible = true;
newStream.pause(false);
enPause = false;
}

btn_play.onRelease = function(){
newStream.pause(false);
_root.preplay._visible = false;
btn_play._visible = false;
btn_pause._visible = true;
enPause = false;
}

btn_pause.onRelease = function(){
newStream.pause(true);
btn_pause._visible = false;
_root.preplay._visible = true;
btn_play._visible = true;
enPause = true;
}

btn_return.onRelease = function() {
newStream.seek(0);
}

btn_full.onPress = function(){
Stage.displayState = "fullScreen";
btn_full._visible = false;
btn_full.enabled = false;
btn_normal._visible = true;
btn_normal.enabled = true;
_root.img_info._visible = false;
_root.scrollBar._visible = false;
_root.menu._xscale _yscale 60;
_root.menu.fond_menu._alpha = 30;
_root.menu._y = 660;
_root.mask_normal._alpha = 100;
_root.myMO._visible = false;
_root.myKO._visible = false;
_root.coverflow._visible = false;
}

btn_normal.onPress = function(){
Stage.displayState = "normal";
_root.movie._width = 550;
_root.movie._height = 370;
_root.movie._x = 325;
_root.movie._y = 231.2;
btn_full._visible = true;
btn_full.enabled = true;
btn_normal._visible = false;
btn_normal.enabled = false;
_root.img_info._visible = true;
_root.scrollBar._visible = true;
_root.menu._xscale _yscale 100;
_root.menu.fond_menu._alpha = 100;
_root.menu._y = 626.1;
_root.mask_normal._alpha = 0;
_root.coverflow._visible = true;
}

var listener:Object = new Object();
Stage.addListener(listener);

listener.onFullScreen = function(isFullScreenMode:Boolean){
if(!isFullScreenMode) {
_root.movie._width = 550;
_root.movie._height = 370;
_root.movie._x = 325;
_root.movie._y = 231.2;
btn_full._visible = true;
btn_full.enabled = true;
btn_normal._visible = false;
btn_normal.enabled = false;
_root.img_info._visible = true;
_root.scrollBar._visible = true;
_root.menu._xscale _yscale 100;
_root.menu.fond_menu._alpha = 100;
_root.menu._y = 626.1;
_root.mask_normal._alpha = 0;
_root.coverflow._visible = true;
} else {
_root.movie._width = Stage.width;
_root.movie._height = Stage.height;
_root.movie._x = 0;
_root.movie._y = 0;
_root.clip.menu.getNextHighestDepth();
_root.clip.menu.fond_menu._alpha = 25;
btn_normal._visible = true;
btn_normal.enabled = true;
_root.img_info._visible = false;
_root.scrollBar._visible = false;
_root.menu._xscale _yscale 60;
_root.menu.fond_menu._alpha = 30;
_root.menu._y = 660;
_root.mask_normal._alpha = 100;
_root.coverflow._visible = false;
}
}

/* barre de volume : 
la largeur du masque qui recouvre la barre rouge de la barre de son
varie en fonction du clique de la souris
*/
volumeBar.back.onPress = function(){
this.onEnterFrame = function(){
var xm = this._xmouse;
if(xm>=0 && xm <= 50){
this._parent.mask._width = this._xmouse;
this._parent._parent.audio.setVolume(this._xmouse*5);
}
if(xm>=0 && xm <= 1.05){
this._parent._parent.audio.setVolume(0);
}
}
}

//petite fonction pour que la barre de son suis la souris tant que le bouton n'est pas lâché et pour afficher l'icone Mute
volumeBar.back.onRelease volumeBar.back.onReleaseOutside function() {
delete this.onEnterFrame;
if(volumeBar.mask._xscale <= 5)
{
volumeBar.icn._visible = 0;
volumeBar.icnMute._visible = 1;

volumeBar.mask._xscale = 0;
volumeBar.audio.setVolume(0);

}
else
{
volumeBar.icn._visible = 1;
volumeBar.icnMute._visible = 0;
}

}
//si on clique sur l'icone volume, le volume se coupe
volumeBar.icn.onPress = function(){

this._visible = 0;
this._parent.icnMute._visible = 1;
this._parent.mask._xscale = 0;
this._parent._parent.audio.setVolume(0);
}

/* barre de navigation : 
comme la largueur de la barre rouge représente la durée actuel, lorsqu'on clique sur
la barre grise (parfois recouverte de la rouge) la durée actuelle de la vidéo va etre modifier
et donc la largueur de la barre rouge va changer
*/
bytesBar.onPress = function(){
this._root.onEnterFrame = function(){
var pos:Number = (_xmouse-62)/546*duree;
newStream.pause(true);//video mise sur pause pour éviter que du son se produise lors du déplacement de la tete de la barre
newStream.seek(pos);
}
}

//meme fonction qui fait en sorte que la tete de la barre suive le curseur tant que le bouton n'est pas lâché
bytesBar.onRelease bytesBar.onReleaseOutside function(){
if(!enPause)
{
newStream.pause(false);
}
delete this._root.onEnterFrame;
}

this.stop();



et voici la partie du code du coverflow sur laquelle je dois faire le lien avec le lecteur :
function updateInfo():Void {
goto.text = current;
img_info.author = infostruc[current-1].auth;
img_info.album = infostruc[current-1].album;

//Version 2 Addition
img_info.artistLink.enabled = true;
if (infostruc[current-1].authLink == undefined) {
img_info.authLink.enabled = false;
} else {
if (infostruc[current-1].authLink == "undefined") {
img_info.authLink.enabled = false;
} else {
img_info.artistLink.onPress = function() {
infostruc[current-1].albumLink = video;
};
}
}
img_info.albumLink.enabled = true;
if (infostruc[current-1].albumLink == undefined) {
img_info.albumLink.enabled = false;
} else {
if (infostruc[current-1].albumLink == "undefined") {
img_info.albumLink.enabled = false;
} else {
img_info.albumLink.onPress = function() {
infostruc[current-1].albumLink = video;
};
}
}
// 
scrollBar.scroller._x = scrollBarStart+((current-1)/(infostruc.length-1)*(scrollBar._width-scrollBarStop));
}


Merci à celles et ceux qui tenteront de m'aider.

BBFUNK01

11 réponses

Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
6
Re Orange73,

ça y est j'ai trouvé :
function updateInfo():Void {
goto.text = current;
img_info.author = infostruc[current-1].auth;
img_info.album = infostruc[current-1].album;

//Version 2 Addition
img_info.artistLink.enabled = true;
if (infostruc[current-1].authLink == undefined) {
img_info.authLink.enabled = false;
} else {
if (infostruc[current-1].authLink == "undefined") {
img_info.authLink.enabled = false;
} else {
img_info.artistLink.onPress = function() {
this._parent._parent.menu.newStream.stop();
this._parent._parent.menu.temps_complet = infostruc[current-1].authLink;
this._parent._parent.menu.newStream.play(infostruc[current-1].albumLink);
this._parent._parent.menu.newStream.pause(true);
trace(this._parent._parent.menu.newStream);
}
}
}
img_info.albumLink.enabled = true;
if (infostruc[current-1].albumLink == undefined) {
img_info.albumLink.enabled = false;
} else {
if (infostruc[current-1].albumLink == "undefined") {
img_info.albumLink.enabled = false;
} else {
img_info.albumLink.onPress = function() {
this._parent._parent.menu.newStream.stop();
this._parent._parent.menu.temps_complet = infostruc[current-1].authLink;
this._parent._parent.menu.newStream.play(infostruc[current-1].albumLink);
this._parent._parent.menu.newStream.pause(true);
trace(this._parent._parent.menu.newStream);
}
}
}
// 
scrollBar.scroller._x = scrollBarStart+((current-1)/(infostruc.length-1)*(scrollBar._width-scrollBarStop));
}
function validateOk(target:MovieClip):Boolean {
return Math.abs(Math.min(Math.max((target._x-target.x)/albumEase, -maxSlide), maxSlide)) == maxSlide;
}
function controlTheObject(mc):Void {
if (mc._name.indexOf("reflection") == -1) {
mc.onPress = function():Void  {
if (getTimer()-this.pressTime<=doubleClickRegister && this.pressTime) {
}
this.pressTime = getTimer();
// Edit by Zack Gildersleeve
// Make front album clickable
// opens albumLink in _blank
if (current == this.cid+1) {
this._parent._parent.menu.newStream.stop();
this._parent._parent.menu.temps_complet = infostruc[current-1].authLink;
this._parent._parent.menu.newStream.play(infostruc[current-1].albumLink);
this._parent._parent.menu.newStream.pause(true);
trace(this._parent._parent.menu.newStream);
}
current = this.cid+1;
updateInfo();
};
}

et ça marche ! :) (mais bon sang j'en ai bavé pour trouver !)

Il ne me reste plus qu'à recaler 2 ou 3 trucs et c'est bon.

Au fait est-ce que tu connais une méthode pour afficher la durée totale d'une vidéo parce que "onMetaData" rend inutilisable ma barre de navigation de la vidéo et en plus ça affiche le temps en secondes.
Du coup pour l'instant je stocke la durée dans le xml.

En tout cas merci beaucoup pour le temps que tu m'as accordé !

Bonne fin de soirée,

BBFUNK01
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

Hello,

et si dans une fonction onPress sur ton image dans le coverflow, tu mets :
newStream.play(infostruc[current-1].albumLink);

çà donne quoi ?



-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
6
Salut Orange73,

décidément tu viens toujours à ma rescousse ! :)

En fait ce que je n'ai pas précisé dans le post c'est que le coverflow est dans un clip nommé "coverflow" et le lecteur, ou plus ou moins la barre des tâches, est contenu dans un clip nommé "menu". J'ai fait comme ça pour une question d'affichage ou de non-affichage des éléments lorsqu'on passe en mode fullscreen.
J'avais donc déjà essayé que tu m'as conseillé et ça ne marchait pas.
En fait dans le code initial du lecteur, au tout début du script il y a :
vidéo = "ma_video.flv";

au lieu de :
vidéo = "";

... dans le code que j'ai posté.

J'ai donc fait plusieurs essais sans grands résultats, mais je vais essayer un truc qui peut marcher je pense :

je vais définir au début du code du clip "coverflow" une variable comme ceci :
monfilm = "";[code=as]
 ensuite dans le onPress de l'image du coverflow :
[code=as]monfilm = infostruc[current-1].albumLink;


et enfin au début du code du clip "menu" :
vidéo = _root.coverflow.monfilm;


Alors après je ne sais pas si cela permettra d'indiquer le chemin de la vidéo au lecteur flv, car habituellement c'est plutôt ça :
vidéo = "vidéos/ma_vidéo.flv";

donc en fait je ne sais pas si l'absence des guillemets dans ma variable "monfilm" peut causer des problèmes, je présume que non parce qu'à priori les guillemets servent à cerner le chemin indiqué, mais je ne sais pas comment ça se passera avec une variable.

Je vais tester et verdict dans quelques instants.

BBFUNK01
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
6
Bon ben verdict : ça ne marche pas.

Je pensais que ça aurait pu le faire, en fait je ne sais pas quelle est la bonne méthode pour que dans mon clip "coverflow", sur le onPress de l'image du coverflow, indiquer à mon clip "menu" :
vidéo = le nom de la vidéo en rapport avec l'image contenus dans le xml 


Donc si tu as des suggestions je suis preneur.

Merci,

BBFUNK01
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

Dans ton onPress :
this.parent.menu.video = le nom de la vidéo en rapport avec l'image contenus dans le xml 



-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

Pardon, habitude AS3 ;-)

Donc en AS2 :
this._parent.vidéo = le nom de la vidéo en rapport avec l'image contenus dans le xml 



-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

Arffff encore mauvais ;-)

this._parent.menu.vidéo = le nom de la vidéo en rapport avec l'image contenus dans le xml 



-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
6
Réponse super rapide !!!

J'essaie tout de suite et je te dis.

BBFUNK01
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
6
Bon, encore chou blanc :

j'ai fait :

img_info.albumLink.onPress = function() {
this._parent.menu.video = infostruc[current-1].albumLink;
trace(this._parent.menu.video);
}


et mon trace n'indique rien dans le panneau de sortie, en fait je me suis trompé aussi : au début de mon code "menu" c'est :
video = "ma_video.flv";


et non pas :
vidéo = "ma_vidéo.flv";


Donc est-ce que tu penses que l'absence d'accent sur "video" peut avoir une influence ?

BBFUNK01
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
6
Je ne sais pas si ça joue mais mes vidéos sont stockées dans un dossier, donc mon xml est comme ça :
jaquettes_videos/album1.jpg
MUSICHRONO
Vava
videos/vava.flv
videos/vava.flv

Mais je ne pense pas que ça puisse influer sur le ciblage de la vidéo dans le code action script.

BBFUNK01
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

Dans ton onPress, fais un trace(infostruc[current-1].albumLink);
Tu vois quoi ?


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)