ActionScript Facile Chapitre 9 Création du composant AS3 ToolTip
Date de publication : 30 novembre 2010
Par
Matthieu (Accueil) (Blog)
I. Introduction
II. Cahier Des Charges Fonctionnel du ToolTip
III. Cahier Des Charges Techniques du ToolTip
IV. Conclusion
IV-A. Partagez vos créations graphiques du composant ToolTip
V. Remerciements / Téléchargements
I. Introduction
Dans ce chapitre, nous allons créer un nouveau composant ActionScript : le ToolTip.
Le ToolTip n'est ni plus ni moins qu'une simple bulle d'information. Elle est utilisée pour afficher des informations supplémentaires sur un bouton, un formulaire...
II. Cahier Des Charges Fonctionnel du ToolTip
Un ToolTip est un UIComponent composé :
d'un background ( arrière-plan )
d'un champ texte de type UITextField .
Comme nous l'avons appris dans les chapitres précédents, il suffit de passer en paramètre une
instance de la classe ToolTip au setter tooltip de la classe de base
UIComponent .
La
méthode show() (du composant) sera
appelée lorsque l'UIComponent en question sera
survolé par l'utilisateur.
Le composant
ToolTip possède les
fonctionnalités suivantes :
Personnalisation du texte ainsi que de son formatage.
Personnalisation de l'arrière-plan de l'infobulle.
Apparition après un délai défini de l'infobulle ( exprimé en millisecondes ).
III. Cahier Des Charges Techniques du ToolTip
Le Cahier Des Charges Techniques du composant ToolTip est relativement simple.
Personnalisation du texte ainsi que de son formatage.
Pour cela, nous coderons un
getter qui renverra une référence au champ texte de type
UITextField .
Personnalisation de l'arrière-plan de l'infobulle.
Comme d'habitude, nous allons overrider la méthode de base applySkin de la classe UIComponent.
Apparition après un délai défini de l'infobulle ( exprimé en millisecondes ).
Nous allons
overrider la
méthode de base
show de la classe
UIComponent . Et ensuite, nous lancerons la méthode parente après le
délai défini dans un
setTimeOut .
Nous laisserons également la possibilité à l'utilisateur de
modifier ce délai à tout moment à l'aide d'un
getter / setter .
IV. Conclusion
Évolutions des fonctionnalités
Je vous propose de laisser vagabonder votre imagination et de créer des Skins pour le composant ToolTip . Étonnez les développeurs d'ActionScript-Facile.
Vous pouvez également ajouter un effet Tween pour gérer l'apparition du ToolTip , un effet alpha , lui ajouter une ombre , etc.
Sources commentées
ToolTipExample.as
com.actionscriptfacile.ui.tooltip.ToolTip.as
com.as3facileexemple.skin.classic.DefaultToolTipSkin.as
ToolTipExample.as package
{
import com.actionscriptfacile.ui.combo.element.ComboBoxElement;
import com.actionscriptfacile.ui.utils.UIMargins;
import com.actionscriptfacile.ui.combo.ComboBox;
import com.actionscriptfacile.ui.text.UITextField;
import com.actionscriptfacile.ui.tooltip.Tooltip;
import com.as3facileexemple.skin.classic.DefaultComboBoxSkin;
import com.as3facileexemple.skin.classic.DefaultToolTipSkin;
import flash.display.Sprite;
import flash.events.Event;
import flash.text.Font;
public class ToolTipExample extends Sprite
{
protected var m_comboFonts:ComboBox;
protected var m_textField:UITextField;
public function ToolTipExample()
{
m_comboFonts = new ComboBox();
m_comboFonts.applySkin( new DefaultComboBoxSkin() );
m_comboFonts.addEventListener(Event.CHANGE, changeHandler );
m_comboFonts.resize( 300, 70 );
m_comboFonts.componentsHeight = 25;
m_comboFonts.margins = new UIMargins( 2, 2, 2, 2 );
m_comboFonts.tooltip = new Tooltip();
m_comboFonts.tooltip.applySkin( new DefaultToolTipSkin() );
m_comboFonts.tooltip.label = 'Choisissez une police de Caractères';
m_comboFonts.tooltip.labelField.changeFormat("color", Math.random() * 0X00FFFFFF);
m_comboFonts.tooltip.labelField.changeFormat("size", 12);
m_comboFonts.tooltip.labelField.changeFormat("font", "Arial");
m_comboFonts.tooltip.resize( 210, 30 );
var fonts:Array = Font.enumerateFonts( true );
var boxElement:ComboBoxElement;
for each ( var font:Font in fonts )
{
boxElement = m_comboFonts.addElement( font.fontName, font.fontName );
boxElement.labelField.changeFormat("color", Math.random() * 0X00FFFFFF);
boxElement.labelField.changeFormat("size", 14);
}
m_comboFonts.currentElement.labelField.changeFormat("font", "Arial",-1,-1,true);
m_comboFonts.currentElement.labelField.changeFormat("color", Math.random() * 0X00FFFFFF,-1,
-1,true);
m_comboFonts.currentElement.labelField.changeFormat("size", 15,-1,-1,true);
m_comboFonts.currentElement.labelField.changeFormat("bold", true,-1,-1,true);
m_comboFonts.currentElement.labelField.alignCenter();
m_textField = new UITextField();
m_textField.text = 'Enjoy Your Life ';
m_textField.x = m_textField.y = 5;
m_textField.width = m_textField.maxWidth = 300;
m_textField.height = m_textField.maxHeight = 30;
m_textField.changeFormat("size", 20);
m_textField.changeFormat("color", Math.random() * 0X00FFFFFF);
m_comboFonts.y = m_textField.y + m_textField.height;
m_comboFonts.x = 20;
m_comboFonts.tooltip.y = m_comboFonts.y - 55;
m_comboFonts.tooltip.x = m_comboFonts.x + 200;
addChild( m_textField );
addChild( m_comboFonts );
}
private function changeHandler(e:Event):void
{
m_textField.font = m_comboFonts.currentLabel;
m_textField.changeFormat("color", Math.random() * 0X00FFFFFF);
}
}
}
com.actionscriptfacile.ui.tooltip.Tooltip.as package com.actionscriptfacile.ui.tooltip
{
import com.actionscriptfacile.skin.ISkin;
import com.actionscriptfacile.ui.text.UITextField;
import com.actionscriptfacile.ui.UIComponent;
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.utils.clearTimeout;
import flash.utils.setTimeout;
public class Tooltip extends UIComponent
{
static public const TOOLTIP_BACKGROUND_SKIN:String = 'TOOLTIP_BACKGROUND_SKIN';
private var m_background:DisplayObject;
private var m_texte:UITextField;
private var m_appearTimeout:Number;
private var m_appearTime:Number;
public function Tooltip()
{
init();
}
private function init():void
{
m_appearTime = m_appearTimeout = 300;
mouseChildren = false;
m_background = new Sprite();
m_texte = new UITextField();
m_texte.alignCenter();
addChild( m_background );
addChild( m_texte );
m_texte.x = m_texte.y = 5;
}
public function set label( p_text:String ):void
{
m_texte.text = p_text;
resize( m_texte.textWidth + 10, m_texte.textHeight + 10 );
}
public function get label():String { return m_texte.text; }
public function get labelField():UITextField { return m_texte; }
public function get appearTime():Number { return m_appearTime; }
public function set appearTime(value:Number):void { m_appearTime = (value < 0 ) ? 0 : value; }
override public function applySkin(p_skin:ISkin):void
{
var definition:Class;
definition = p_skin.getSkin( TOOLTIP_BACKGROUND_SKIN ) as Class;
if ( definition != null )
m_background = new definition();
addChild( m_background );
addChild( m_texte );
}
override public function resize( p_width:Number, p_height:Number ):void
{
m_texte.maxHeight = p_height - 5;
m_texte.maxWidth = p_width - 5;
m_background.width = m_texte.width = p_width;
m_background.height = m_texte.height = p_height;
}
override public function show():void
{
m_appearTimeout = setTimeout( super.show, m_appearTime );
}
override public function hide():void
{
clearTimeout( m_appearTimeout );
super.hide();
}
override public function destroy():void
{
clearTimeout( m_appearTimeout );
m_texte.destroy();
removeChild( m_background );
m_texte = null;
m_background = null;
super.destroy();
}
}
}
com.as3facileexemple.skin.classic.DefaultToolTipSkin.as package com.as3facileexemple.skin.classic
{
import com.actionscriptfacile.skin.Skin;
import com.actionscriptfacile.ui.tooltip.Tooltip;
import com.as3facile.skin.tooltip.TooltipBackgroundSkin;
public class DefaultToolTipSkin extends Skin
{
public function DefaultToolTipSkin()
{
setSkin( Tooltip.TOOLTIP_BACKGROUND_SKIN, TooltipBackgroundSkin );
}
}
}
IV-A. Partagez vos créations graphiques du composant ToolTip
Et vous, quels sont les skins que vous avez créé pour le ToolTip : Commentez
V. Remerciements / Téléchargements
Je tiens ici à remercier
La Rédactrice Kalyparker
pour la mise au gabarit de l'article original au format Developpez.com.
Merci beaucoup à l'équipe Developpez.com de contribuer à la diffusion du Framework ActionScript-Facile.
Copyright © 2010 Matthieu - www.actionscript-facile.com. Aucune reproduction, même partielle, ne peut être faite
de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur.
Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 €
de dommages et intérêts.
Cette page est déposée.