Recherche

AS3 snippet : utiliser des Strings sur plusieurs lignes Envoyer
Programmation et tuning - as3
Écrit par Neamar   
Samedi, 05 Juin 2010 21:06

AS3 snippet : définir des chaînes de caractères en plusieurs lignes dans le code.

Tout d'abord, clarifions : le but n'est pas d'avoir du texte affiché sur plusieurs lignes (pour cela, il y a la propriété multiline sur textfield et le symbole "\n"), mais bien de clarifier le code en entrant un string sur plusieurs lignes.

Par défaut, AS3 ne supporte pas les String définis sur plusieurs lignes. Ainsi, la ligne suivante provoquera une erreur à la compilation :

 
/**
 * Afficher un message.
 */
public function set Text():void
{
  Infos.htmlText = "<p>Bonjour !</p>
  <p>Comment allez-vous ?</p>";
}
 
Error: Syntax error: A string literal must be terminated before the line break.
Infos.htmlText = "

Bonjour !

En PHP, on a la syntaxe Heredoc, mais en AS3 cela ne fonctionne malheureusement pas :(

L'astuce est de se souvenir qu'AS3 est basé sur la norme ECMAscript, tout comme Javascript.
Bilan : on importe les solutions développées en Javascript ;)
Et voici le code qui va bien :

 
/**
 * Afficher un message.
 */
public function set Text():void
{
  Infos.htmlText = ( <![CDATA[<p>Bonjour !</p>
  <p>Comment allez-vous ?</p>]]> ).toString();
}
 

Notez que le toString() à la fin est facultatif, le compilateur castant automatiquement les variables en String si la méthode (ici, set htmlText(v:String)) requiert un paramètre String.
Niveau esthétique, c'est pas génial... mais ça peut dépanner pour les grands textes, par exemple une matrice d'adjacence (au hasard !) :

 
Level.fromAdjacencyMatrix( <![CDATA[
 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1
 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0
 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1
 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0
]]>);
 
Mise à jour le Jeudi, 10 Juin 2010 22:15
 

Ajouter votre commentaire

Votre nom:
Votre site web:
Sujet:
Commentaire (vous pouvez utiliser de balises HTML ici):
  Code de vérification. Lettres minuscules seulement et sans espace.
Code de vérification: