begin process at 2012 02 09 11:28:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Scripts

 > 

ActionScript

 > 

class, renvois de String à mon script AS3


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

class, renvois de String à mon script AS3

mercredi 6 mai 2009 à 21:19:09 | class, renvois de String à mon script AS3

mikouRoux

Salut à tous,

Voilà un moment que je m'arrache les cheveux pour comprendre comment renvoyer une chaine de caractère en sortie d'une classe en actionscript3. Cela concerne d'ailleurs tout type de variable !!!

Dans la page principale, j'appelle ma classe comme ceci :
var affichageDefilant:AffichageDefilant = new AffichageDefilant(lesTitres[i], 1, 5);

Dans la classe, je traite ma chaine pour lui ajouter un effet animé.
Le tout est basé sur un timer qui modifie en permanence ma chaine.

Le problème, c'est que cette chaine à caractère "aléatoire" j'aimerais l'afficher dans un textBox de ma page principale.
Seulement, je n'arrive pas à récupérer la variable en sortie de la classe.

Ce que j'ai réussi à faire :
Avec la ligne qui suit (dans ma classe), j'arrive à récupérer le contenu de "output" dans la page principale.
Le problème, c'est que output se trouve ici à la tête de ma classe et n'est pas rafraichie constamment !!!!
public var output:String = "ma valeur de sortie";

Suis assez clair ?
Je peux poster mon code, mais il est assez long.
J'ai peur de vous effrayer !!!

++
jeudi 7 mai 2009 à 09:08:27 | Re : class, renvois de String à mon script AS3

Girou

Membre Club
Salut,

tu passes les parametres nécessaires au constructeur de ta classe, comme tu le fais
var affichageDefilant:AffichageDefilant = new AffichageDefilant(lesTitres[i], 1, 5);

dans ta classe AffichageDefilant tu as un Timer qui modifie une chaine de caractère
cette chaine modifiée est stockée dans une variable de classe (private var _output:String)
a chaque appel du timer, quand tu as traité ta chaine, tu emets un evenement

ton animation principale écoute l'évenement de ta classe et déclanche une fonction qui récupère la valeur de _output

contenuTextbox=affichageDefilant.output (avec une fonction get output():String{return _output;} dans ta classe AffichageDefilant)

@+

signature not found
jeudi 7 mai 2009 à 15:50:09 | Re : class, renvois de String à mon script AS3

mikouRoux

Super,
C'est c'est exactement ce que je cherchais. Par contre, je ne suis pas sur de bien comprendre : "quand tu as traité ta chaine, tu emets un evenement"

Je n'arrive
à retourner une valeur à outputque si je lui assigne la valeur dans le constructeur. Hors, dans mon cas, j'aimerais attribuer une nouvelle valeur à output pour chaque évènement TIMER.

Merci si quelqu'un sait.
Et merci encore pour ta super explication Girou ;)


Aperçu de ma classe :


// ma variable de classe
private var output:String;
//mon constructeur
public function AffichageDefilant(chaine:String, interval:Number, boucle:Number)
{
  var minuteTimer:Timer = new Timer(1, 5);           
  minuteTimer.addEventListener(TimerEvent.TIMER,onTick);
  minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
  minute.start();
}

// pour l'évènement TIMER
private function onTick(event:TimerEvent):void
{
//Traitement de ma chaine
  output = "la valeur de ma chaine après traitement";
}
// pour l'évènement TIMER_COMPLETE

private function onTimerComplete(event:TimerEvent):void
{
}


// pour renvoyer output
// j'assigne une valeur à output dans la fonction onTick
// je reçois "null" en retour :(
public function get valeur():String
{
  return output;
}

jeudi 7 mai 2009 à 16:04:42 | Re : class, renvois de String à mon script AS3

Girou

Membre Club
public function AffichageDefilant(chaine:String, interval:Number, boucle:Number)
{
  var minuteTimer:Timer = new Timer(1, 5);           
  minuteTimer.addEventListener(TimerEvent.TIMER,onTick);
  minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
  minuteTimer.start();
}


@+

signature not found
jeudi 7 mai 2009 à 16:15:15 | Re : class, renvois de String à mon script AS3

mikouRoux

Yep,
Excuse moi : problème de recopiage !
J'ai bien mis minuteTimer.start() dans mon code.

Mon problème n'est pas là !
Je viens d'essayer d'imbriquer la fonction get dans ma fonction onTick (évènement Timer).
Mais comme je le soupçonnais : "Les accesseurs ne peuvent pas être imbriqués dans d'autres fonctions" (cf : erreur retournée par flash !)

// ma variable de classe
private var output:String;
//mon constructeur
public function AffichageDefilant(chaine:String, interval:Number, boucle:Number)
{
  var minuteTimer:Timer = new Timer(1, 5);           
  minuteTimer.addEventListener(TimerEvent.TIMER,onTick);
  minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
  minuteTimer.start();// ;) Merci pour la correction
}

// pour l'évènement TIMER
private function onTick(event:TimerEvent):void
{
// pour renvoyer output
  function get valeur():String
  {
    return output;
  }

}
// pour l'évènement TIMER_COMPLETE

private function onTimerComplete(event:TimerEvent):void
{
}



Merci beaucoup pour ton aide
jeudi 7 mai 2009 à 16:43:09 | Re : class, renvois de String à mon script AS3

Girou

Membre Club
Réponse acceptée !
Il faut légèrement revoir ta classe vest quelque chose comme

public class AffichageDefilant extends EventDispatcher
{
public static var OUTPUT_UPDATED:String="outputUpdated";
// ma variable de classe
private var output:String;
//mon constructeur
public function AffichageDefilant(chaine:String, interval:Number, boucle:Number):void
{
  var minuteTimer:Timer = new Timer(1000, 5);      
// Attention Timer défini en millisecondes   
  minuteTimer.addEventListener(TimerEvent.TIMER,onTick);
  minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
  minuteTimer.start();
}

// pour l'évènement TIMER
private function onTick(event:TimerEvent):void
{
//Traitement de ma chaine
  output = "la valeur de ma chaine après traitement "+Math.floor(Math.random()*100);
 
dispatchEvent(new Event(OUTPUT_UPDATED));
}
// pour l'évènement TIMER_COMPLETE
private function onTimerComplete(event:TimerEvent):void
{
}

// pour renvoyer output
// j'assigne une valeur à output dans la fonction onTick
// je reçois "null" en retour :(
public function get valeur():String
{
  return output;
}
}

ensuite dans le script principale

var affichage:AffichageDefilant = new AffichageDefilant(lesTitres[i], 1, 5);
affichage.
addEventListener(AffichageDefilant.OUTPUT_UPDATED, refresh);

public function refresh(e:Event=null):void{
montextbox.text=affichage.valeur // ou
montextbox.text=e.target.valeur
}


@+

signature not found
jeudi 7 mai 2009 à 19:35:38 | Re : class, renvois de String à mon script AS3

mikouRoux

Re re re re re cher Girou !

Maintenant, je commence vraiment à avoir l'impression de commencer à abuser.
Ton code fonctionne à la perfection mais il y a encore un petit détail qui m'échappe !!!!
J'ai sérieusement bossé toute la journée pour résoudre ce problème qui me donne envie de m'arracher les cheveux de la tête. Donc je me permet d'abuser encore un peu de ta gentillesse

Dans ma classe, j'ai l'évènement TIMER et l'évènement TIMER_COMPLETE.
Ta solution fonctionne très bien pour rafraichir output à la fin de chaque évènement TIMER. Pour TIMER_COMPLETE, j'aimerais rééxecuter la classe n fois (en fonction de la longeur de chaine), mais en incémentant la valeur d'une variable qui défini la position dans ma chaine.

Pour illustrer un peu :
l'évènement TIMER mélange 1 caractère de la chaine 5 fois.
l'évènement TIMER_COMPLETE qui écoute si le compteur est arrêté le relance aussitôt pour passer au caractère suivant qui a son tour est envoyé dans TIMER etc...

Désolé d'être un peu abruti
Ceci est mon premier programme en AS3.
Et malgrès la structure que je trouve vraiment bien, il y a des bizzareries de ce type que je ne saisis pas encore !!!
jeudi 7 mai 2009 à 22:08:22 | Re : class, renvois de String à mon script AS3

mikouRoux

Hello,

Oublie mon dernier problème. Après en avoir eu trop mare d'avoir le nez dans le code, je suis rentré chez moi et sur le trajet : miracle : solution !
Certainement pas très propre, mais ça fonctionne.

J'ai enlevé l'évènement TIMER_COMPLETE.
J'ai changé le compteur pour qu'il soit infini (50, 0).
J'ai mis une variable qui s'incrémente pour chaque évènement TIMER et qui se remet à 0 aù delà d'une certaine limite.

Et voilà. Ca marche nickel ;)

Merci beaucoup en tous les cas pour ton aide précieuse.


Cette discussion est classée dans : page, string, chaine, classe, sortie


Répondre à ce message

Sujets en rapport avec ce message

Pattern Observer sans pattern ? [ par jcsydney ] BonjourJe sais comment associer un clip à une classe AS2 pour lui donner un comportement (du genre un clip Balle dans un FLA et un Balle.as pour le co Animation de sortie lors d'un changement de page [ par MilkGraphik ] Salut , je suis graphiste et comme mon metier l'indique , je ne suis pas bon du tout en dev... jusqu'a maintenant je laissais le soin à un vrai dev de classe [ par sangho ] Ma classe contenue dans le fichier table_membre.as :lass table_membre {   var nom:String; function get_champ():String {  nom = "lol";  return nom; } } un formulaire flash avec selection du destinataire. [ par beneba ] Bonjour à tous, Je suis tombé par le plus heureux des hasards sur ce tuto : http://www.flashkod.com/codes/FORMULAIRE-MAILEUR-MULTIADRESSE-FLASH-PHP-F String to Array [ par yasdar ] bonjour a tous voila j'ai une variable var aze:String = "1,25,30,14,70"; je veux utiliser cette variable comme an tableau (Array) j'écris var tab:Arr récupérer les variables d'un page eb [ par bizarr ] Bonjour à tous, je cherche à récupérer une variable inscrite dans une page web pour l'utiliser comme donnée dans mon script AS2 (ou 3). Par exemple flashvars [ par yasdar ] bonjour voila j'ai une animation flash qui fonctionne très bien, il a du texte provenant d'une variable Flashvar( inclue dans le HTML de la page.html) récupérer une variable d'une scène vers une classe... [ par tartartartar ] Bonjour, J'aurais voulu savoir comment peut on récupérer une variable annoncée dans m'a scène principale, dans une classe ? J'arrive vraiment pas à Réalisation d'un QCM [ par twinsen60 ] Bonjour, Je cherche un exemple, liens ou autre, pour la réalisation d'un QCM, avec des transitions différentes entre chaques pages. J'ai une page d'a Lien vers un autre page html dans un séquence précise [ par Cynthia14 ] Bonjour, je suis débutante en flash et je suis en train de monter un site web dans AS2. Par contre, j'ai besoin d'ouvrir une autre page html mais dans


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales