Créer un bouton en relief (bouton biseauté) en ActionScript 3 (AS3)
Pour créer le biseau, on utilise la classe BevelFilter.
Actionscript:
-
// instances du bouton et des dessins
-
var monBouton:SimpleButton = new SimpleButton();
-
var normal:Shape = new Shape();
-
var survol:Shape = new Shape();
-
var clic:Shape = new Shape();
Définition de tous les paramètres du biseau
Actionscript:
-
var distance:Number = 5;
-
var angle:Number = 45;
-
var surbrillance:Number = 0xFFFFFF;
-
var alphaSurbrillance:Number = 1.0;
-
var ombre:Number = 0x000000;
-
var alphaOmbre:Number = .9;
-
var flouX:Number = 5;
-
var flouY:Number = 5;
-
var intensite:Number = 1;
-
var qualite:Number = 3;
-
var type:String = "inner";
-
var masquage:Boolean = false;
-
// definition du biseau
-
var filtreBiseau:BevelFilter = new BevelFilter(distance,angle, surbrillance, alphaSurbrillance, ombre, alphaOmbre, flouX, flouY, intensite, qualite, type, masquage);
Formes et états du bouton
Actionscript:
-
// les dessins
-
normal.graphics.beginFill(0x0000FF);
-
normal.graphics.drawRoundRect(0, 0, 70, 30, 30);
-
survol.graphics.beginFill(0xFF0000);
-
survol.graphics.drawRoundRect(0, 0, 70, 30, 30);
-
clic.graphics.beginFill(0x00FF00);
-
clic.graphics.drawRoundRect(0, 0, 70, 30, 30);
-
// les états du bouton
-
monBouton.upState = normal;
-
monBouton.overState = survol;
-
monBouton.downState = clic;
-
monBouton.hitTestState = normal;
Biseau sur le bouton et affichage
Actionscript:
-
// application du filtre au bouton
-
monBouton.filters = new Array(filtreBiseau);
-
// affichage du bouton
-
this.addChild(monBouton);
;-)
Je suis Antony Chauviré, développeur sur la Flash Platform.
Bonjour,
Pourriez-vous mettre à disposition les documents.fla ? Cela me permttrais de mieux comprendre votre code.
Merci. Sinon, votre blog est très bien. :)
Bonjour,
Je voulais vous demander si les états du bouton étaient réservés à la classe SimpleButton, ou pouvait-on déjà les retrouver en ActionScript 2.0 avec la classe Button.
Il me semble que non, mais dans ce cas je ne comprends pas comment construire dynamiquement un bouton en ActionScript 2.0, tant est si bien qu'on puisse le faire ...
Merci.
Finalement mes recherches ont abouti.
-> livedocs.macromedia.com/f...
"Using movie clips to customize Button skins"
C'est moins pratique qu'en AS3, mais vu que mon appli est en AS2 ...
A +
Malheureusement, on ne peux pas créer dynamiquement un bouton en AS2. Il faut simuler le bouton dans un clip.
;)
Slt,
J'essaie d'accéder au texte d'un bouton que j'ai changer de statique à dynamique pour lui envoyer une information Xml qui vise à changer le mot du textField bouton dans une autre langue. Cela fonctionne dans mes autres champs de texte dynamique mais pour le bouton je reçois cette erreur (bouton que j'ai créée en cliquant droit sur le champs texte) :
ReferenceError: Error #1069: La propriété monTitreLivre est introuvable sur flash.display.SimpleButton et il n'existe pas de valeur par défaut.
at index_accueil_fla::MainTimeline/frame1()
Comment peut-on accéder au texte dynamique d'un bouton ?
J'ai essayée :
root.btn.monTexte.texte = Xml....
this.btn.monTexte.texte = Xml.....
rien à faire !!!^^
Ma seconde question concerne les champs de texte dynamique.
Pourquoi lorsque l'on crée un champs de texte dynamique et que l'on écrit un texte à l'intérieur, rien ne s'affiche à l'écran lors du test ?
Ma troisième question concerne un bogue bizarre.
Quand je transfert mes données XML dans les champs de texte dynamique, ça fonctionne mais j'ai du copier coller et utiliser le même champs pour tous les autres sinon aucun des autres champs de texte que j'avais créer ne changeais de langue ? Ce champs dynamique je l'ai reprit d'une autre appli multilingue. Ai-je oubliée d'activer quelque chose pour que ça fonctionne ?
Louche !!
Voilà, mais en prio j'aimerai avoir une réponse à la question 1 si quelqu'un à une idée et de la patience !!
Merci d'avance !
Bonjour Reine,
En ActionScript 3, les boutons sont des objets de type SimpleButton. Ces objets possèdent 4 propriétés : upState, overState, downState et hitTestState. Ces propriétés correspondent aux 4 états des boutons.
Ensuite, tu peux écrire dans ton champ de texte de cette façon :
TextField(monBouton_btn.upState).text = "Accueil";
TextField(monBouton_btn.overState).text = "Accueil";
TextField(monBouton_btn.downState).text = "Accueil";
TextField(monBouton_btn.hitTestState).text = "Accueil";
Tannoy
Merci !
Je test cette solution et je te tiens au courant !
Merci Tannoy,
Ca fonctionne, c'est impeccable.