Quelques problèmes simples en AS 3

Quelques problèmes simples en AS 3 - Flash/ActionScript - Programmation

Marsh Posté le 26-07-2009 à 18:31:32    

Bonjour,  
 
je découvre l'AS 3 et je me heurte à deux ou trois problèmes.  
 
1./ Concaténer une variable avec un nom d'occurence est-ce possible ?  
2./ Retader l'exécution d'une fonction ? Par exemple j'ai un diaporama et un clip de transition, je veux que la photo change à un certain moment du clip de transition.  
3./ Une fonction que je pourrais définir par " playAndStop(numéroDeLaFrame) " est ce que cela existe ? Donc lancer un clip et l'arrêter à une certaine frame.
 
Merci


Message édité par Profil supprimé le 26-07-2009 à 18:31:47
Reply

Marsh Posté le 26-07-2009 à 18:31:32   

Reply

Marsh Posté le 26-07-2009 à 19:40:47    

1/ Tu peux recupérer le nom d'une occurence via la propriété name
    ex: var clipName:string = "clip_"+monClip.name;
 
2/ Tu as le timer qui te permet d'executer une fontion au bout d'une durée prédéfinie... Sinon, tu peut ordonné l'execution de cette dernière sur la dernière image clé de ta transition...
 
3/Pourquoi  ne pas utilisé les étiquettes sur la timeline, ou le stop() à l'image clé en question ?
Sinon oui, tu peux créer une fonction qui écoute la frame actuelle, et qui execute un stop si cette dernière est égale à x...
 

Code :
  1. function playJuska(frameFinal:uint):void {
  2.  this.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
  3.  this.play()
  4.  function enterFrameHandler(e:Event){
  5.    if(this.frame == frameFinal){
  6.      this.stop();
  7.      this.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
  8.    }
  9.  }
  10. }
  11. monClip.playJuska(23);


 
Ce n'est qu'une idée, je ne suis pas developpeur... D'ailleurs, je n'ai pas testé

Message cité 1 fois
Message édité par abais le 26-07-2009 à 19:49:10

---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 27-07-2009 à 11:28:10    

Merci, le tout a fonctionné

 
abais a écrit :

1/ Tu peux recupérer le nom d'une occurence via la propriété name
    ex: var clipName:string = "clip_"+monClip.name;

 

Très bien mais si par exemple je veux créer un MouseEvent sur l'occurence ?
clipName.addEventListener(...) ne fonctionnera pas. Comment faire ?
concrètement j'ai une liste de bouton appelant une même fonction.
ça m'arrangerait pas mal d'alléger mon code et donc de ne pas écrire :
Bouton1.addEventListener(...);
Bouton2.addEventListener(...);
etc etc

 


Une autre question : Est ce que je peux tronquer une chaine de caractère ? Pour mon exemple, chaque bouton appel une image spécifique. L'idée serait de tronquer la chaine du nom de l'occurence en gardant le numéro et d'appeler simplement la frame correspondante. ( Bouton 1 renvoie sur Image 1 etc ).
Je suis persuadé qu'il y a mieux.

 

edit : et rapidement, event.ENTER_FRAME a quelle utilité ?

 


merci


Message édité par Profil supprimé le 27-07-2009 à 12:06:47
Reply

Marsh Posté le 27-07-2009 à 19:33:20    

Enterframe c'est un evenement qui se declenche à chaque frame... tout simplement :)

 

sinon, il y a plusieurs démarche pour sélectionner un clip dynamiquement (en fonction de son nom typé en String)...

 
Code :
  1. conteneur.getChildByName('nomdelenfant').addEventListener(...);
  2. //conteneur est le clip qui contient tes bouton... tu peux mettre "this" si le code est dans une clé vide au meme niveau que les boutons...
  3. // sinon une autre solution :
  4. this['nomdelenfant'].addEventListener(...);
  5. //les [] permettent de "traduire" le nom enfermé en objet
 

et oui il y a une façon de tronquer des caractères, enfin, en garder qu'une parti : c'est la fonction substr(debut,longueur)...
"début" est l'emplacement du premier caractère de la chaine à garder... "longueur" est la longueur du texte à garder en nombre de caractère... si longueur n'est pas spécifié, il prendra jusqu'au dernier caractère de la chaine...
Attention, les numéro de caractère débute à 0 et non 1 ! Le premier caractère d'un mot est donc le "zerotième" ( :pt1cable: )et non le 1er

Code :
  1. var monTexte:String = "j'aime les coups de pieds";
  2. trace(monTexte.substr(5,8)); //retournera "e les co"
  3. trace(monTexte.substr(20)); //retournera "pieds"
 


Message cité 1 fois
Message édité par abais le 27-07-2009 à 19:37:35

---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 27-07-2009 à 20:46:31    

abais a écrit :

Enterframe c'est un evenement qui se declenche à chaque frame... tout simplement :)
 
sinon, il y a plusieurs démarche pour sélectionner un clip dynamiquement (en fonction de son nom typé en String)...
 

Code :
  1. conteneur.getChildByName('nomdelenfant').addEventListener(...);
  2. //conteneur est le clip qui contient tes bouton... tu peux mettre "this" si le code est dans une clé vide au meme niveau que les boutons...
  3. // sinon une autre solution :
  4. this['nomdelenfant'].addEventListener(...);
  5. //les [] permettent de "traduire" le nom enfermé en objet


 
et oui il y a une façon de tronquer des caractères, enfin, en garder qu'une parti : c'est la fonction substr(debut,longueur)...
"début" est l'emplacement du premier caractère de la chaine à garder... "longueur" est la longueur du texte à garder en nombre de caractère... si longueur n'est pas spécifié, il prendra jusqu'au dernier caractère de la chaine...
Attention, les numéro de caractère débute à 0 et non 1 ! Le premier caractère d'un mot est donc le "zerotième" ( :pt1cable: )et non le 1er

Code :
  1. var monTexte:String = "j'aime les coups de pieds";
  2. trace(monTexte.substr(5,8)); //retournera "e les co"
  3. trace(monTexte.substr(20)); //retournera "pieds"


 
 


 
Merci pour tes réponses qui m'ont été très utiles. Tout fonctionne et je commence vraiment à apprécier la structure de ce langage.  
 
Merci encore, A+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed