Textfield

Simplement afficher du texte

On peut utiliser la classe TextField. Il faut renseigner la propriété text.

var TxtF:TextField = new TextField();

TxtF.x = 30;
TxtF.y = 30;
TxtF.height = 20;
TxtF.width = 100;
TxtF.text = "Un essai.";

addChild(TxtF);

En utilisant une classe et un Sprite

Dans un fichier .as, il faut importer TextField. Voici un exemple où l'on insère le champ texte dans un Sprite. C'est le programme principal qui place le Sprite à l'endroit choisi.

package {
	import flash.text.TextField;
	import flash.display.Sprite;

	public class DisplayTextField extends Sprite {
		public function DisplayTextField() {
			var TxtF:TextField = new TextField();

			TxtF.x = 0;
			TxtF.y = 0;
			TxtF.height = 20;
			TxtF.width = 100;
			TxtF.text = "Un essai.";

			addChild(TxtF);
		}
	}
}

Programme appelant :

var MyTxtF:Sprite = new DisplayTextField();

MyTxtF.x = 10;
MyTxtF.y = 10;

addChild(MyTxtF);

Hiérarchie des objets principaux héritant de DisplayObject :

Héritage de DisplayObject

Comme on le voit ici, seuls les objets de type DisplayObjectContainer possèdent la méthode addChild(DisplayObject).
De plus, cette méthode n'accepte que des objets de type DisplayObject : si on crée une classe qui n'hérite pas de DisplayObject, ça ne marche pas.

Sans utiliser de Sprite

Il suffit d'étendre directement la classe TextField. On accède ainsi automatiquement aux propriétés x, y, text, etc.

package {
	import flash.text.TextField;

	public class DisplayTextField extends TextField {
		public function DisplayTextField() {
		this.x=0;
		this.y=0;
		this.height=20;
		this.width=100;
		this.text="Un essai.";
		}
	}
}

Programme appelant :

var MyTxtF:DisplayTextField = new DisplayTextField();

addChild(MyTxtF);

Dans cette configuration, l'instance peut reféfinir toutes les propriétés :

var MyTxtF:DisplayTextField = new DisplayTextField();

MyTxtF.text = "Test";

addChild(MyTxtF);

Ce programme renvoie "Test" à la place de "Un essai." défini dans le constructeur. Voir la page sur les accesseurs pour raffiner ce comportement.

Ajouter un champ texte de type input

Il est important de définir la propriété border (sinon on ne voit rien), et la propriété type :

var TxtF:TextField = new TextField();

TxtF.x = 30;
TxtF.y = 30;
TxtF.height = 20;
TxtF.width = 100;
TxtF.border = true;

TxtF.type = TextFieldType.INPUT;

addChild(TxtF);

Dans un fichier .as, il faut importer TextField et TextFieldType. Voici un exemple où l'on insère le champ texte dans un Sprite. C'est le programme principal qui place le Sprite à l'endroit choisi.

package {
	import flash.text.TextField;
	import flash.text.TextFieldType;
	import flash.display.Sprite;

	public class InputTextField extends Sprite {
		public function InputTextField() {
			var TxtF:TextField = new TextField();

			TxtF.x = 0;
			TxtF.y = 0;
			TxtF.height = 20;
			TxtF.width = 100;
			TxtF.border = true;
			TxtF.type = TextFieldType.INPUT;

			addChild(TxtF);
		}
	}
}

Programme appelant :

var MyTxtF:Sprite = new InputTextField();

MyTxtF.x = 10;
MyTxtF.y = 10;

addChild(MyTxtF);

On pourrait facilement rendre cet objet un peu plus versatile en ajoutant des arguments au constructeur (largeur, hauteur).

Utilisation du composant Label

On peut aussi utiliser le composant Label. Pour que ça marche, le programme appelant (le .fla) doit avoir le composant dans sa bibliothèque (afficher la liste des composants et faire glisser Label dans la bibliothêque).
Un inconvénient de cette solution est que le .swf résultant est beaucoup plus lourd.
Exemple avec un Sprite :

package {
	import fl.controls.Label;
	import flash.display.Sprite;

	public class DisplayLabel extends Sprite {
		public function DisplayLabel() {
			var TxtF:Label = new Label();

			TxtF.move(0,0);
			TxtF.height = 20;
			TxtF.width = 100;
			TxtF.text = "Un essai.";

			addChild(TxtF);
		}
	}
}

Programme appelant :

var MyTxtF:Sprite = new DisplayLabel();

MyTxtF.x = 10;
MyTxtF.y = 10;

addChild(MyTxtF);