Problème d'affichage de variable

Résolu
Sub_Mat
Messages postés
79
Date d'inscription
vendredi 27 mai 2005
Statut
Membre
Dernière intervention
17 octobre 2010
- 25 mai 2009 à 19:21
Sub_Mat
Messages postés
79
Date d'inscription
vendredi 27 mai 2005
Statut
Membre
Dernière intervention
17 octobre 2010
- 28 mai 2009 à 19:01
Bonjour à tous,
Voilà je vous explique, je souhaiterai afficher l'actualité en continu sur mon site en flash, et pour cela je charge les données dans un fichier texte. Mon problème est le suivant, je n'arrive pas à afficher le contenu avec l'animation.
Sans l'animation (actionscript) cela marche.
C'est la fonction dmcLoadVars.onLoad = function(reussit){ }
qui me pose problème et pourtant j'en est besoin.
Comment puis-je résoudre ce problème ?

Flash :
//////////////////////////////////////////////////////////////////////////////////////////////////////////
Dans la scène j'ai placer un champ avec l'occurrence "myField".

Actionscript :
//////////////////////////////////////////////////////////////////////////////////////////////////////////
var dmcLoadVars = new LoadVars();
dmcLoadVars.load("texte.txt");
dmcLoadVars.onLoad = function(reussit){

//Animation avec les 2 variables
var txt1:String = dmcLoadVars.actus1;
var txt2:String = dmcLoadVars.actus2;
myField.text= txt1;
changeFieldText( myField, txt1, txt2 );
function changeFieldText( field :TextField, newText :String, oldText :String )
:Void{
 var i :Number= 0 ;
 var n :Number= newText.length ;
 this.onEnterFrame= function()
 :Void{
  var label :String= myField.text ;
  var prev :String= newText.substr(0,i) ;
  var next :String= oldText.substr(i) ;
  myField.text= prev+next ;
  i++ ;
  if( i> n+100 ) {
   if( myField.text== newText ) changeFieldText( myField, oldText, newText, reduce ) ;
   else changeFieldText( myField, newText, oldText, reduce ) ;
  }
 }
}
}

Fichier texte.txt
//////////////////////////////////////////////////////////////////////////////////////////////////////////
actu1s=Blablalblablalbla&actus2=Outyrobirobirubrubnrug

-----------------
Merci d'avance pour vos réponses
Cordialement Sub_Mat

5 réponses

cs_tom
Messages postés
1511
Date d'inscription
samedi 8 décembre 2001
Statut
Modérateur
Dernière intervention
11 juin 2009

28 mai 2009 à 16:02
Bah oui ton soucis, c'est que tu mets la fonction changeFieldText() dans le onLoad()...

Remettons tous tes elements dans l'ordre :

var monaffichage1:String = "non défini";
var monaffichage2:String = "non défini";



var dmcLoadVars = new LoadVars();
dmcLoadVars.onLoad = function(reussit){
    monaffichage1 = dmcLoadVars.actus1;
    monaffichage2 = dmcLoadVars.actus2;
    myField.text= monaffichage1 ;

    changeFieldText( myField, monaffichage1 , monaffichage2 );

}

function changeFieldText( field :TextField, newText :String, oldText :String ):Void{
 
var i :Number= 0 ;
 var n :Number= newText.length ;
 this.onEnterFrame= function()
 :Void{
  var label :String= myField.text ;
  var prev :String= newText.substr(0,i) ;
  var next :String= oldText.substr(i) ;
  myField.text= prev+next ;
  i++ ;
  if( i> n+700 ) {
   if( myField.text== newText ) changeFieldText( myField, oldText, newText, reduce ) ;
   else changeFieldText( myField, newText, oldText, reduce ) ;
  }
 }
}

dmcLoadVars.load("texte.txt");

Et là? Ca marche pas?
3
Sub_Mat
Messages postés
79
Date d'inscription
vendredi 27 mai 2005
Statut
Membre
Dernière intervention
17 octobre 2010

26 mai 2009 à 14:30
Je suis sur que cette ligne "dmcLoadVars.onLoad = function(reussit){" est la cause de mon problème.
S'il vous plait aider moi !
Mon problème doit sans doute être simple à régler !
0
cs_tom
Messages postés
1511
Date d'inscription
samedi 8 décembre 2001
Statut
Modérateur
Dernière intervention
11 juin 2009

27 mai 2009 à 14:57
Non, ce n'est pas la ligne en cause...

Au contraire, c'est une variable qui te permet de savoir si il arrive bien à lire ton fichier:

dmcLoadVars.onLoad = function(reussit){

if(reussit){

//Animation avec les 2 variables
var txt1:String = dmcLoadVars.actus1;
...

}
}

Par contre, je vois que ton fichier texte ne possede pas les memes variables que celle que cherche ton flash... Est ce que tu as ecrit trop vite?

Pareil: est ce que ton fichier texte est enregistré au format UTF8?

Et pour une question de logique, il est plus intelligent de faire passer "dmcLoadVars.load("texte.txt");" APRES le dmcLoadVars.onload.

Quand je lis ton truc, je vois pas de probleme particulier. Donc ça vient pas de ce que tu penses, mais plutot d'un couillage au niveau de l'adressage ou des bonnes variables... En tout cas en jetant un coup d'oeil comme ça, c'est ce qui me vient...
0
Sub_Mat
Messages postés
79
Date d'inscription
vendredi 27 mai 2005
Statut
Membre
Dernière intervention
17 octobre 2010

27 mai 2009 à 20:55
Bonsoir Tom,
Merci pour votre aide !

Mais le système de récupération de variable fonctionne très bien.
Essayé ceci vous verrez :

Flash :
//////////////////////////////////////////////////////////////////////////////////////////////////////////
Dans la scène, placer deux champs, un avec l'occurrence "affichage1", puis un autre avec l'occurrence "affichage2".

Actionscript :
//////////////////////////////////////////////////////////////////////////////////////////////////////////
var dmcLoadVars = new LoadVars();
dmcLoadVars.load("texte.txt");
dmcLoadVars.onLoad = function(reussit){
    affichage1.text = dmcLoadVars.actus1;
    affichage2.text = dmcLoadVars.actus2;
}

Fichier texte.txt : (juste ceci)
//////////////////////////////////////////////////////////////////////////////////////////////////////////
actus1=fdsfs dsf sdf sdfs s dsffsdfdsfs&actus2=Le azekjfiksdf dfkdsokf dfksifds fdsfs

--------------------------------------------------------------------------------
Chez moi il n'y a aucun souci, Sa fonctionne bien !
"Pareil: est ce que ton fichier texte est enregistré au format UTF8?"
Réponse : non, mon fichier est encodé en ANSI.

Pour ce qui est de l'animation elle marche également bien.
Essayé ceci :

Flash :
//////////////////////////////////////////////////////////////////////////////////////////////////////////
Dans la scène, placer un champ, un avec l'occurrence "myField".

Actionscript :
//////////////////////////////////////////////////////////////////////////////////////////////////////////
var txt1:String = "Message1";
var txt2:String = "Affichage 2";
myField.text= txt1;
changeFieldText( myField, txt1, txt2 );
function changeFieldText( field :TextField, newText :String, oldText :String ):Void{
 var i :Number= 0 ;
 var n :Number= newText.length ;
 this.onEnterFrame= function()
 :Void{
  var label :String= myField.text ;
  var prev :String= newText.substr(0,i) ;
  var next :String= oldText.substr(i) ;
  myField.text= prev+next ;
  i++ ;
  if( i> n+700 ) {
   if( myField.text== newText ) changeFieldText( myField, oldText, newText, reduce ) ;
   else changeFieldText( myField, newText, oldText, reduce ) ;
  }
 }
}

--------------------------------------------------------------------------------
Donc l'animation marche également !
Maintenant il faut mixer les deux pour afficher les actus du ficher texte avec l'animation.
Pour récupérer les deux actus, je dois impérativement utiliser " dmcLoadVars.onLoad = function(reussit){} ", ce qui m'oblige à mettre mon code d'animation à l'intérieur de la function(reussit) .
Voici le code sur lequel donc je bloque :

Flash :
//////////////////////////////////////////////////////////////////////////////////////////////////////////
Dans la scène j'ai placer un champ avec l'occurrence "myField".

Actionscript :
//////////////////////////////////////////////////////////////////////////////////////////////////////////
var dmcLoadVars = new LoadVars();
dmcLoadVars.load("texte.txt");
dmcLoadVars.onLoad = function(reussit){

//Animation avec les 2 variables
var txt1:String = dmcLoadVars.actus1;
var txt2:String = dmcLoadVars.actus2;
myField.text= txt1;
changeFieldText( myField, txt1, txt2 );
function changeFieldText( field :TextField, newText :String, oldText :String )
:Void{
 var i :Number= 0 ;
 var n :Number= newText.length ;
 this.onEnterFrame= function()
 :Void{
  var label :String= myField.text ;
  var prev :String= newText.substr(0,i) ;
  var next :String= oldText.substr(i) ;
  myField.text= prev+next ;
  i++ ;
  if( i> n+100 ) {
   if( myField.text== newText ) changeFieldText( myField, oldText, newText, reduce ) ;
   else changeFieldText( myField, newText, oldText, reduce ) ;
  }
 }
}
}

Fichier texte.txt
//////////////////////////////////////////////////////////////////////////////////////////////////////////
actu1s=Blablalblablalbla&actus2=Outyrobirobirubrubnrug

-----------------------------------------------------------------------------
Et là plus rien ne marche !

Merci d'avance pour vos réponses
Cordialement,
Sub_mat
0

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

Posez votre question
Sub_Mat
Messages postés
79
Date d'inscription
vendredi 27 mai 2005
Statut
Membre
Dernière intervention
17 octobre 2010

28 mai 2009 à 19:01
MERCI BEAUCOUP TOM !
Ca marche super bien !
Bravo et bonne continuation !
Cordialement,
Sub_Mat
0