Utiliser la classe String en ActionScript 3 (AS3)
La classe String permet de manipuler des chaînes de texte. Elle fait appel à des méthodes très utiles pour modifier et construire des chaînes. Une chaîne de caractères est une valeur comprise entre guillemets et contenant des informations, par exemple "ActionScript 3".
Au travers de cette exemple, nous allons étudier différentes méthodes de la classe String
La méthode toUpperCase() de la classe String
La méthode toUpperCase() renvoie une copie d'une chaîne, dont tous les caractères minuscules ont été convertis en majuscules. La chaîne d'origine n'est pas modifiée.
Nous l'utilisons dans notre exemple lorsque nous cliquons sur le bouton minuscules
-
//Le bouton majuscules
-
function majusculesHandler(evt:MouseEvent):void
-
{
-
saisie_txt.text = saisie_txt.text.toUpperCase();
-
}
-
majuscules_btn.addEventListener(MouseEvent.CLICK, majusculesHandler);
La méthode toLowerCase() de la classe String
La méthode toLowerCase() renvoie une copie d'une chaîne, dont tous les caractères majuscules ont été convertis en minuscules. La chaîne d'origine n'est pas modifiée.
Nous l'utilisons dans notre exemple lorsque nous cliquons sur le bouton minuscules
-
//Le bouton minuscules
-
function minusculesHandler(evt:MouseEvent):void
-
{
-
saisie_txt.text = saisie_txt.text.toLowerCase();
-
}
-
minuscules_btn.addEventListener(MouseEvent.CLICK, minusculesHandler);
La propriété length de la classe String
La propriété length est en lecture seule. Elle indique le nombre de caractères d'une chaîne.
Nous l'utilisons dans notre exemple lorsque nous cliquons sur le bouton Nombre de caractères et nous affichons le résultat dans le champ de texte Etat
-
//Le bouton pour compter les caractères
-
function caracteresHandler(evt:MouseEvent):void
-
{
-
etat_txt.text = "Le texte contient " + saisie_txt.length + " caractères.";
-
}
-
nbCaracteres_btn.addEventListener(MouseEvent.CLICK, caracteresHandler);
La méthode indexOf de la classe String
La méthode indexOf recherche une chaîne et renvoie la position (index) de la première occurence trouvée.
La propriété focus de la classe Stage
La propriété focus gère l'objet d'affichage qui a le focus clavier
La méthode setSelection de la classe TextField
La méthode setSelection sélectionne un texte en fonction des index de début et de fin, spécifiés en paramètres.
Nous les utilisons dans notre exemple lorsque nous cliquons sur le bouton de recherche.
-
//Le bouton recherche
-
function rechercheHandler(evt:MouseEvent):void
-
{
-
var saisie:String = saisie_txt.text;//la chaîne affiché dans la zone de texte centrale
-
var indexRecherche:int = saisie.indexOf(recherche_txt.text);//index de la première occurence de la chaîne recherchée
-
if(saisie != "" && indexRecherche>= 0)
-
{
-
stage.focus = saisie_txt;//le focus est donné à la zone de texte centrale
-
saisie_txt.setSelection(indexRecherche, indexRecherche + recherche_txt.length);//On sélectionne les caractères à partir de l'index de la première occurence jusqu'àu nombre de caractères recherchés
-
}
-
else
-
{
-
etat_txt.text = "La recherche n'a rien donnée";
-
}
-
}
-
recherche_btn.addEventListener(MouseEvent.CLICK, rechercheHandler);
;)
Je suis Antony Chauviré, développeur sur la Flash Platform.
merci pour ce tutorial
Slt,
A propos de classe, j'en ai créée une pour le son dans un fichier as, que j'appelle bien dans mon document .fla. Cette classe charge le son et contrôle le son.
J'ai testée sur un .fla neutre sans d'autre fonctionnalité ça fonction très bien.
Mais voilà quand je la rajoute a un projet avec plus de fonction , elle renvoi une erreur pour tous les navigateURL qui se trouvent dans mes calques, dans le document.
Comment faire pour que la classe n'interfère pas sur les scrips des calques ?
Les erreurs renvoyer sont :
1180: Appel à une méthode qui ne semble pas définie, navigateToURL.
1046: Ce type est introuvable ou n'est pas une constante de compilation : URLVariables.
Je sais que si on utilise une classe on ne doit normalement pas mettre de script dans les calques mais n'y a t-il pas un autre moyen ? Je souhaitais vraiment cette classe uniquement pour le son.
J'ai aussi essayée de créer trois classes différentes pour mes boutons play, pause et stop, ensuite j'ai exporter les boutons pour actionscript en indiquant à chacun sa classe dans mon document, mais j'ai eu quand même des erreurs.
Quelles seraient la solution la plus simple pour que je puisse avoir la classe son et pas d'erreur dans mon calque ?
Merci d'avance !
Bonjour,
Ton projet ne serait pas en ActionScript 2 ?
Slt Tannoy,
Je te confirme c'est bien de l'as3 avec flash 9 Cs3.^^
J'utilise le player 9.
J'ai ma classe dans un fichier Actionscript extension .as et dans mon document où il existe plusieurs séquences j'ai aussi d'autres fonction du type "navigateURL" "TargetURL.
C'est juste que ce problème me pause un vrai souci car j'avais fini le projet flash que je réalisais quand je me suis rendu compte que le son était infernal lorsque l'on passe d'une séquence à une autre ou d'un document.swf à un autre.swf.
Lorsque l'on lit les séquences linéairement le son se joue correctement, mais, dès que l'on revient en arrière il y a un nouveau son qui rejoue par dessus puisque dans chaque séquence je rechargeais grâce à "new Sound" "new URLRequest"... Et je n'avais que ce choix si je voulais contrôler le son avec "pause", "play", "stop".
J'avais aussi envie de créer cette classe car ça me charge moins de code à chaque séquence ou chaque document. Le travail serait souple, moins long et les documents plus rapide à l'execution.
Le problème c'est que je ne souhaitais que ça interfère sur mes autres codes dans les frames.
Pour stop(); à priori il ne pause pas d'erreur mais dès qu'il y a plus de code il génère plein d'erreurs.
Je sais que si on fait appel à une classe il ne devrait y avoir de code dans le document par la logique mais si stop(); fonctionne pourquoi pas les autres ?
J'espère que mes précisions t'éclaireront.
Merci d'avance !
ReSlt !
Juste sur mon souci, pour être plus précise, comment appeler plusieurs classes en même temps ?