Dimension d'un attachmovie

Résolu
cs_BirD Messages postés 90 Date d'inscription samedi 23 novembre 2002 Statut Membre Dernière intervention 28 avril 2010 - 22 nov. 2006 à 15:17
cs_BirD Messages postés 90 Date d'inscription samedi 23 novembre 2002 Statut Membre Dernière intervention 28 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) :

        infos.varTitre = titre[i];
        infos.varAuteur = auteur[i];
        infos.varComms = comms[i];
        infos.varCorps = corps[i];

        _root.attachMovie("news_txt", "clipNews"+i, 2, infos);

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...

A vous !

BirD

12 réponses

cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
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 !";
 }
};

dans ton clip news_txt pour être sur, rajoute

txtCorps.autoSize=true;

@+
3
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
11 déc. 2006 à 15:44
Salut,

en parcourant le tuto jusqu'au bout on trouve la petite remarque :  - lockRoot pour les swf qui utilisent le mot clée _root.

as-tu penser à faire le lockroot ? -> sur ton fla des news en première ligne this._lockroot=true car dans le script on utilise le _root justement

J'espère que ca peut te débloqier...

@+
3
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
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.

@+
0
cs_BirD Messages postés 90 Date d'inscription samedi 23 novembre 2002 Statut Membre Dernière intervention 28 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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_BirD Messages postés 90 Date d'inscription samedi 23 novembre 2002 Statut Membre Dernière intervention 28 avril 2010
23 nov. 2006 à 19:54
allo !?

BirD
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
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 !

@+
0
cs_BirD Messages postés 90 Date d'inscription samedi 23 novembre 2002 Statut Membre Dernière intervention 28 avril 2010
24 nov. 2006 à 18:59
oui, bonne idée. J'avais pensé faire quelque chose comme ca mais j'avais pas pensé à set intervall...

Je test ca et te redis...

Merci pour la réponse

BirD
0
cs_BirD Messages postés 90 Date d'inscription samedi 23 novembre 2002 Statut Membre Dernière intervention 28 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...

BirD
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
28 nov. 2006 à 22:25
Probleme de ciblage sans doute.

Tu peux m'envoyer le code avec setInterval

@+
0
cs_BirD Messages postés 90 Date d'inscription samedi 23 novembre 2002 Statut Membre Dernière intervention 28 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();

// 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) {
  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 !";
  }
};

BirD
0
cs_BirD Messages postés 90 Date d'inscription samedi 23 novembre 2002 Statut Membre Dernière intervention 28 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.

Salutations

BirD
0
cs_BirD Messages postés 90 Date d'inscription samedi 23 novembre 2002 Statut Membre Dernière intervention 28 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 :
       
        _root["clipNews"+i].imgCentre._height = _root["clipNews"+i].txtCorps._height;

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...

Salutations

BirD
0
Rejoignez-nous