cs_BirD
Messages postés90Date d'inscriptionsamedi 23 novembre 2002StatutMembreDernière intervention28 avril 2010
-
22 nov. 2006 à 15:17
cs_BirD
Messages postés90Date d'inscriptionsamedi 23 novembre 2002StatutMembreDernière intervention28 avril 2010
-
19 déc. 2006 à 11:39
Bonjour à tous,
Voila, ca va faire une bonne semaine que je galère avec un attachmovie. Dans ma biblio, il y a un clip qui va contenir une news. Je fais appel à ce clip pour chaque news que je veux afficher. Je veux les afficher à la suite, dans le sens vertical. Le souci est que la taille du texte de la news peut varier, donc il faut que je connaisse la taille de la news précédente pour placer la suivante... tu me suis ?
Voila un peu de code pour illustrer ma combine (dans une boucle for) :
Jusque la, tout baigne. Il attache les clips (en les superposant) sur la scène.
Ensuite, je veux récupérer la taille du clip 0, j'essaie ceci :
trace(_root.clipNews0._height);
mais ca m'affiche la taille du clip "par défaut", j'entends par la que le texte n'a pas encor été chargé dedans...
Autre alternative proposée par Girou (que je remercie en passant) est de faire comme ceci :
_root.clipNews0.onLoad = function() {
trace(_root.clipNews0._height);
};
Mais en me renseignant, sur g00gle, j'ai appris que onLoad ne marche pas pour les attachmovie...
Donc voila, l'idée de Girou est bonne, il faut attendre que mon clip soit chargé pour obtenir les dimensions, mais je sais pas comment le faire...
cs_Girou
Messages postés1203Date d'inscriptionlundi 10 mars 2003StatutMembreDernière intervention23 juillet 20092 29 nov. 2006 à 19:36
Hello,
voici le script corrigé :
System.useCodepage = true;
//gestion des accents
// Fonction qui redimensionne puis affiche les news après les avoir chargées
function Temporisation(longueur){
monInterval=setInterval(Taille, 1000, longueur);
}
function Taille(longueur) {
nextYpos = 0;
// position _y initiale
decalageVertical = 5;
// les news sont décaler de 5 pixels
_root.clipNews0._visible = true;
for (i=1; i<longueur; i++) {
_root["clipNews"+i]._y = nextYpos+_root["clipNews"+(i-1)]._height;
_root["clipNews"+i]._visible = true;
// Comme il est bien positionner on l'affiche
nextYpos += _root["clipNews"+(i-1)]._height+decalageVertical;
}
trace("Positionnement terminé")
clearInterval(monInterval)
}
var infos = new Object();
var titre = new Array();
var auteur = new Array();
var comms = new Array();
var corps = new Array();
// définition de "txt" en tant qu'objet LoadVars.
txt = new LoadVars();
// chargement du fichier texte.
txt.load("http://freebord.tsape.com/module/phpbb_news/user/testnewsphpbb.php");
//fonction lancée une fois le fichier chargé.
txt.onLoad = function(ok) {
trace("onload statut:"+ok);
if (ok) {
// assignation de chaque valeur du fichier texte
// à un champ de l'animation.
titre = this.titre.split("|");
auteur = this.auteur.split("|");
comms = this.comms.split("|");
corps = this.corps.split("|||/\||");
var longueur = titre.length;
trace("Nombre de sticker="+longueur);
for (i=0; i<longueur; i++) {
// Création de l'objet contenant les variables à faire passer.
infos.varTitre = titre[i];
infos.varAuteur = auteur[i];
infos.varComms = comms[i];
infos.varCorps = corps[i];
// création du nouveau clip
_root.attachMovie("news_txt", "clipNews"+i, 100+i, infos);
// CHAQUE CLIP DOIT ETRE A UNE PROFONDEUR DIFFERENTE,SINON TU ECRASE A CHAQUE FOIS LE CLIP PLACE AVANT
_root["clipNews"+i]._visible = false;
// pas encore bien positionner, on ne l'affiche pas
}
Temporisation(longueur)
//var monInterval=setInterval(Taille, 1000, longueur,monInterval);
} else {
// message d'erreur si le fichier n'a pas été chargé.
txtmews.text = "Erreur: les news ne sont pas disponibles pour l'instant !";
}
};
cs_Girou
Messages postés1203Date d'inscriptionlundi 10 mars 2003StatutMembreDernière intervention23 juillet 20092 22 nov. 2006 à 15:35
Hello,
comment se construit le clip clipNewsN que tu attaches. En gros, comment tu passes des infos transmises dans le attachMovie à l'affichage de ces infos.
cs_BirD
Messages postés90Date d'inscriptionsamedi 23 novembre 2002StatutMembreDernière intervention28 avril 2010 22 nov. 2006 à 16:38
Pour passer les infos, je pars donc de l'objet infos, puis, dans mon clip news_txt de la bibliothèque, j'ai mis 2 textbox dynamiques et le code suivant :
txtTitre.htmlText=varTitre;
txtCorps.htmlText=varCorps;
Le texte est affiché sans problèmes
BirD
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Girou
Messages postés1203Date d'inscriptionlundi 10 mars 2003StatutMembreDernière intervention23 juillet 20092 24 nov. 2006 à 09:10
Salut,
je me suis renseigné sur la question...
En fait, entre le attachMovie et le trace(_root.clipNews0._height);le clip n'a pas encore eut le temps de 'mettre à jour' les champs de textes, donc il te renvois effectivement la taille d'origine du clip.
Une possibilité serait de faire tous tes attachmovie en mettant les clips sur _visible=false.
de créer un setInterval d'une seconde poue être vraiment sur et de créer un fonction qui positionne tous les clip convenablement et les rend visible.
Laisser le temps a Flash de mettre tout a jour quoi !
cs_BirD
Messages postés90Date d'inscriptionsamedi 23 novembre 2002StatutMembreDernière intervention28 avril 2010 28 nov. 2006 à 15:41
Ca a l'aire de marcher, mais j'ai un souci, quand je suis dans la fonction qui est appelée par setIntervall, je ne peux pas accéder aux clips que j'ai attaché
Le "trace" du bout de code si dessous me renvoi undefined :
for ... {
_root.attachMovie("news_txt", "clipNews"+i, 2, infos);
}
trace(_root.clipNews1._height)
La franchement, je comprends pas... Le trace renvoie une valeur uniquement s'il est dans le for...
cs_BirD
Messages postés90Date d'inscriptionsamedi 23 novembre 2002StatutMembreDernière intervention28 avril 2010 29 nov. 2006 à 12:53
voila le code complet :
System.useCodepage = true; //gestion des accents
// Fonction qui redimensionne puis affiche les news après les avoir chargées
function Taille(longueur){
/*for (i=0;i<longueur;i++){
trace(_root.clipNews[i]._height);
}*/
trace(_root.clipNews1._height);
}
var infos = new Object();
var titre = new Array();
var auteur = new Array();
var comms= new Array();
var corps = new Array();
// définition de "txt" en tant qu'objet LoadVars.
txt = new LoadVars();
//fonction lancée une fois le fichier chargé.
txt.onLoad = function (ok) {
if (ok) {
// assignation de chaque valeur du fichier texte
// à un champ de l'animation.
titre = this.titre.split("|");
auteur = this.auteur.split("|");
comms = this.comms.split("|");
corps = this.corps.split("|||/\||");
var longueur = titre.length;
for (i=0;i<longueur;i++){
// Création de l'objet contenant les variables à faire passer.
infos.varTitre = titre[i];
infos.varAuteur = auteur[i];
infos.varComms = comms[i];
infos.varCorps = corps[i];
// création du nouveau clip
_root.attachMovie("news_txt", "clipNews"+i, 2, infos);
}
setInterval(Taille, 1000, longueur );
} else {
// message d'erreur si le fichier n'a pas été chargé.
txtmews.text = "Erreur: les news ne sont pas disponibles pour l'instant !";
}
};
cs_BirD
Messages postés90Date d'inscriptionsamedi 23 novembre 2002StatutMembreDernière intervention28 avril 2010 10 déc. 2006 à 10:38
Hello,
Merci encor pour toutes ces infos, le swf marche parfaitement dès que je le prends a part. Mais mon site consiste à chargé ces news dans un aute swf. Pour ce faire j'utilise la source http://www.flashkod.com/tutorial.aspx?ID=190 que je remerci d'ailleur.
Donc depuis cette source, je charge des swf. Mon nouveau problème est que quand mon fichiers de news est chargé, tout se passe comme si le conteneur ne se redimensionne pas. Toutes les news sont alors superposées. J'essaie depuis bientot une semaine de boutiquer ct'histoire, mais rien n'y fait. Alors si quelqu'un à une idée, il est le bienvenu.
cs_BirD
Messages postés90Date d'inscriptionsamedi 23 novembre 2002StatutMembreDernière intervention28 avril 2010 19 déc. 2006 à 11:39
Hello,
encor une dernière question :
une fois les news affichée, je veux encor mettre une image au fond la news. Je sépare mon image en trois :
- le haut : ou il y a le titre
- le centre : le text de la news
- le bas : heure date auteur
Le haut sera immobile. Le centre à le même _y que le haut mais avec une taille dynamique et le bas à le _y du haut + taille du centre. Dans le code, quand je change la taille du centre, il se décale en même temps vers le bas... étrange. Voila le code qui fonctionne pas :
Dans ce bout de code, il faut prendre en compte que dans mon clip clipNews, imgCentre est déjà placé au bon endroit, il ne reste plus qu'a le redimensioner...