Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS3
AS3 Questions relatives à la programmation ActionScript 3 (Cours AS3)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/03/2011, 17h43   #1
Nouveau Membre du Club
 
Femme
Développeur Web
Inscription : janvier 2006
Messages : 102
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2006
Messages : 102
Points : 28
Points : 28
Par défaut Changer couleur d'un texte au survol de la souris

Bonjour,

Je débute tout juste en AS3 et je n'arrive pas à faire un simple changement de couleur d'un texte au survol de la souris.

Je vous explique :
J'ai un conteneur principal "sprite" dans lequel j'ai inclu deux autres "sprite" afin de séparé mon animation en deux partie.
J'ai donc une partie supérieur et une partie inférieur.
Dans la partie inférieur, j'ai un textField que j'ai englobé dans un movieClip pour faire "trembler" le texte et ce movieClip est incorporé dans le sprite inférieur. Je vous laisse voir le code...

Et donc, j'aimerais qu'au survol du sprite inférieur, plusieurs choses se passent dont le changement de couleur de mon texte.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
var Conteneur:sprite = new Sprite();
var Sup:Sprite = new Sprite();
var Inf:Sprite = new Sprite();
Conteneur.addChild(Sup);
Conteneur.addChild(Inf);
Sup.x = 5;
Sup.y = 5;
Inf.x = 5;
Inf.y = 255;
 
var format:TextFormat = new TextFormat();
format.font = "Calibri";
format.size = 20;
format.color = 0xFFFFFF;
format.align = TextFormatAlign.CENTER;
var texte:TextField = new TextField();
texte.defaultTextFormat = format;
texte.text = "TOUTES LES OFFRES FLASH";
texte.width = 300;
 
 
var TextTremble:MovieClip = new MovieClip();
TextTremble.x = 0;
TextTremble.y = 0;
TextTremble.addChild(texte);
Inf.addChild(TextTremble);
 
Inf.addEventListener(MouseEvent.MOUSE_DOWN, contraste);
 
function contraste(evt:MouseEvent):void
{
trace(format.color);
format.color = 0x000080;
trace(evt.type);
}
Merci d'avance pour vos lumières...
__________________
"Les tests sont au développement ce que le fromage est à la fondue"
gazelle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 01h42   #2
Membre Expert
 
Avatar de Lorenzo77
 
Inscription : mai 2006
Messages : 1 294
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 1 294
Points : 1 220
Points : 1 220
Code :
1
2
3
4
function contraste(evt:MouseEvent):void
{
    texte.textColor= 0x000080;
}
tout simplement
__________________
Le plus grand arbre est né d'une graine menue, une tour de neuf étages est partie d'une poignée de terre.
Mon blog : http://web.codeur.free.fr
Lorenzo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 12h50   #3
Membre régulier
 
Avatar de SnowStyle
 
Homme
Développeur Web
Inscription : octobre 2005
Messages : 68
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2005
Messages : 68
Points : 73
Points : 73
Je rajouterai que MOUSE_DOWN c'est pas l'event survol de la souris

je pense qu'il te faut obligatoirement deux events, MOUVE_OVER pour set ta couleur de survol et autres effets puis MOUSE_OUT pour revenir à la normal.
SnowStyle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 12h07   #4
Nouveau Membre du Club
 
Femme
Développeur Web
Inscription : janvier 2006
Messages : 102
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2006
Messages : 102
Points : 28
Points : 28
Merci beaucoup.

En effet SnowStyle, j'ai fait comme tu as dit.
Et pour la couleur du texte, j'ai créé en fait un nouveau format que j'attribue à mon TextField dans ma fonction.

Petite question à part entière:
Cette fonction je la place dans mon public function.

Je m'explique, j'ai ma class principal, et à l'intérieur j'ai ma public function du même nom que ma classe.
Et donc à l'intérieur, j'ai cette fonction concernant le changement de couleur.

Je trouve ça illogique et j'ai l'impression que la programmation orienté objet perd tout son sens.

Comment dois-je m'y prendre pour organiser tout ça et ne pas avoir de fonction à l'intérieur de ma public function principal.

En code, ça donne ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
package
{
	import flash.display.*;
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.text.TextFormatAlign;
        import .........
 
	public class NomDeLaClass extends Sprite
	{
		public function NomDeLaClass ()
		{
                    var Conteneur:sprite = new Sprite();
                    var Sup:Sprite = new Sprite();
                    var Inf:Sprite = new Sprite();
                    Conteneur.addChild(Sup);
                    Conteneur.addChild(Inf);
                    Sup.x = 5;
                    Sup.y = 5;
                    Inf.x = 5;
                    Inf.y = 255;
 
                    var format:TextFormat = new TextFormat();
                    format.font = "Calibri";
                    format.size = 20;
                    format.color = 0xFFFFFF;
                    format.align = TextFormatAlign.CENTER;
                    var formatSurvol:TextFormat = new TextFormat();
                    formatSurvol.font = "Calibri";
                    formatSurvol.size = 20;
                    formatSurvol.color = 0x000000;
                    formatSurvol.align = TextFormatAlign.CENTER;
                    var texte:TextField = new TextField();
                    texte.defaultTextFormat = format;
                    texte.text = "TOUTES LES OFFRES FLASH";
                    texte.width = 300;
 
 
                    var TextTremble:MovieClip = new MovieClip();
                    TextTremble.x = 0;
                    TextTremble.y = 0;
                    TextTremble.addChild(texte);
                    Inf.addChild(TextTremble);
 
                    Inf.addEventListener(MouseEvent.MOUSE_OVER, contraste);
                    Inf.addEventListener(MouseEvent.MOUSE_OUT, decontraste);
 
                    function contraste(evt:MouseEvent):void
                    {
                       texte.setTextFormat(formatSurvol);
                    }
 
                     function decontraste(evt:MouseEvent):void
                    {
                        texte.setTextFormat(format);
                    }
                }
        }
 
}
Merci d'avance.
Une fois ça acquis, je pourrai avancer dans mon développement.
(j'ai l’impression que j'ai des lacunes concernant la POO)
__________________
"Les tests sont au développement ce que le fromage est à la fondue"
gazelle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 12h32   #5
Membre régulier
 
Avatar de SnowStyle
 
Homme
Développeur Web
Inscription : octobre 2005
Messages : 68
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2005
Messages : 68
Points : 73
Points : 73
Euh, tu peux les mettre à la suite de ton constructeur (public fonction principale), sous private function le plus souvent, ou autres type selon les besoins.

Mais bon je débute en poo, j'ai pas encore compris la logique et le sens de ce concept encore.
SnowStyle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 12h36   #6
Nouveau Membre du Club
 
Femme
Développeur Web
Inscription : janvier 2006
Messages : 102
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2006
Messages : 102
Points : 28
Points : 28
Désolé j'ai même pas utilisé le mot "constructeur" dans ma question.

Le problème est que si je le met en fonction (private ou public) après mon constructeur, j'ai souvent des erreurs.

Dans le cas présent, ça me donnerait :

Accès à la propriété non définit...

Peut-être que je définis mal mes variables?..
__________________
"Les tests sont au développement ce que le fromage est à la fondue"
gazelle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 12h52   #7
Membre régulier
 
Avatar de SnowStyle
 
Homme
Développeur Web
Inscription : octobre 2005
Messages : 68
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2005
Messages : 68
Points : 73
Points : 73
Ah oui je n'avais pas fait gaf, toute les variables que tu définis dans une fonction, même le constructeur, sont temporaire, enfin tu ne peux plus y accéder une fois la fonction achevé.

Il faut les déclarés en... global, bon j'appelle ça global par habitude mais c'est pas global le terme exact je pense

tu les déclares dans public class NomDeLaClass extends Sprite { }

dans ton cas tu utilises texte et format dans d'autres fonctions, donc ça donnerait

Code :
1
2
3
4
5
6
7
8
 
public class NomDeLaClass extends Sprite
{
	private var format:TextFormat = new TextFormat();
	private var formatSurvol:TextFormat = new TextFormat();
	private var texte:TextField = new TextField();
 
...
SnowStyle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 12h55   #8
Nouveau Membre du Club
 
Femme
Développeur Web
Inscription : janvier 2006
Messages : 102
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2006
Messages : 102
Points : 28
Points : 28
Ah oui, je me doutais que c'était quelque chose de ce genre mais je n'avais pas testé.

Je me met au travail pour refaire mon organisation.

Merci!
__________________
"Les tests sont au développement ce que le fromage est à la fondue"
gazelle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 13h11   #9
Membre régulier
 
Avatar de SnowStyle
 
Homme
Développeur Web
Inscription : octobre 2005
Messages : 68
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2005
Messages : 68
Points : 73
Points : 73
De rien

J'y pense, tu peux les déclarer comme ça aussi:
private var format:TextFormat;

juste crée l'adresse sans valeur

Bon courage pour ton organisation, si un jour tu comprends la logique de la poo, ça m'intéresse
SnowStyle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h50.


 
 
 
 
Partenaires

Hébergement Web