IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flash Pascal Discussion :

Le hover en css [Flash Pascal]


Sujet :

Flash Pascal

  1. #1
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut Le hover en css
    Pour imiter le hover :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    62
    63
    64
    65
     
    program survol;
     
    uses Flash8;
     
    {$FRAME_WIDTH  545}
    {$FRAME_HEIGHT 150}
    {$BACKGROUND  $FAEBD7}
    {$FRAME_RATE 30}
     
    type
     
      TRect=class(Rectangle)
       constructor Create(x, y, width, height: Integer);
       top,left,right,Bottom:integer;
      end; 
     
      mymovie=class(movieclip)
       ptmouse:Point;
       myrect:TRect;
       Format1,Format2: TextFormat;
       Field: TextField;
       constructor Create;
       procedure onEnterFrame;
      end; 
     
    function ptinrect(pt:Point;RECT:TRect):Boolean;
    begin
     if (pt.x>=rect.left) and (pt.x<=rect.right) and (pt.y>=rect.top) and (pt.y<=rect.Bottom)  then  result:=true else result:=False;
    end;    
     
     
    constructor TRect.create(x, y, width, height: Integer);
    begin
     Inherited Create(x,y,width,height);
     left:=x;
     top:=y;
     right:=x+width;
     bottom:=y+height;
    end;  
     
     
    constructor mymovie.Create;
    begin
     inherited Create(nil,'mymovie',1); 
     Format1 := TextFormat.Create('Arial', 25, $000000,true,false,true);
     Format2 := TextFormat.Create('Arial', 25, $ff0000,true,false,true);
     Field := TextField.Create(self, '', 1, 10,10,250,40); 
     Field.SetNewTextFormat(Format1);
     myrect:=TRect.Create(10,10,250,40); //Field.BoundsRect
    end;
     
     
    procedure Mymovie.onEnterFrame;
    begin
      ptmouse:=Point.Create(_xmouse,_ymouse);
      //si les ccords de la souris appartiennent à Field alors changer la couleur
      if ptinrect(ptmouse,myrect) then Field.SetNewTextFormat(Format2) else   Field.SetNewTextFormat(Format1);
      Field.Text:=('mon futur lien');
    end;
     
     
    begin
      mymovie.Create;
    end.
    Ma question pour l'instant est : comment changer le curseur avec le survol du Textfield ? il me faut peut-être un movieclip container et ainsi récupérer en plus l'événement onmousedown...

    @+

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    en effet si tu ajoutes une procédure onPress le curseur devient une main.

    Note que onPress est sensible au contenu, donc il ne se déclenchera QUE lorsque la souris sera au dessus du TextField - le reste du clip étant vide.


    petite précision sur onPress, c'est une propriété de movieClip qu'on peut renseigner sous la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    constructor MyMovie.Create;
    begin
     ...
     onPress := doPress;
    end;
     
    procedure MyMovie.doPress;
    begin
    end;
    mais en fait il est plus simple de déclarer directement une méthode onPress qui remplacement la propriété de MovieClip.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    procedure MyMovie.onPress;
    begin
    end;

    NB: je travaille actuellement sur un bug un peu complexe qui interdit de déclarer ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    type
      MyMovieClip = class(MovieClip)
       procedure onClick;
      end;
    var
      m1,m2: MyMovieClip;
    begin 
      m1.onPress := m2.onClick;
    end;
    en effet il existe en Pascal une nuance contextuelle entre l'appel à m2.onClick et la référence à m2.onClick...et FlashPascal ne la gère pas correctement. Dans d'autres langages c'est la présence de parenthèses qui fait la distinction entre la référence "m2.onClick" et l'appel "m2.onClick()"...dans les premiers Pascal les parenthèses n'étaient pas autorisées sur une méthode sans paramètre, aujourd'hui elles sont optionnelles.

    Petit rappel aussi (ou pas) FlashPascal utilise en interne une fonction anonyme pour gérer les procédures "of object" (mais il n'autorise pas leur usage explicite)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // exemple
      m1.onPress := doPress;
    // est codé sous la forme
      m1.onPress := procedure begin
        Self.doPress;
      end;
     
      onPress := m2.doPress;
    // est codé sous la forme
      Self.onPress := procedure begin
        m2.doPress;
      end;
    en effet, Flash ne connait pas la notion de "procedure of object" qui comprend 2 pointeurs : l'instance objet et sa méthode. La fonction anonyme permet de stocker ces informations.

    j'hésite à intégrer le "Sender" de Delphi qui serait très pratique mais qui change la déclaration des évènements Flash en ajoutant ce paramètre...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    begin
    // exemple
      m1.onPress := doPress;
    // est codé sous la forme
      m1.onPress := procedure begin
        Self.doPress(m1);
      end;
     
      onPress := m2.doPress;
    // est codé sous la forme
      onPress := procedure begin
        m2.doPress(Self);
      end;
    end;
     
    procedure MyMovie.doPress(Sender: TObject);
    begin
    end;
    je vais faire un sondage
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    Merci pour cet éclairage technique..., je regarde le sondage

    @+

  4. #4
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    J'ai ajouté boundsRect au TextField et je me suis aperçu que rectangle avec des paramètres en integer, ce n'est pas pratique.
    Ce serait mieux en number...Est-ce possible ?

    VOIR CODE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
     program survol;
     
    uses Flash8;
     
    {$FRAME_WIDTH  545}
    {$FRAME_HEIGHT 150}
    {$BACKGROUND  $FAEBD7}
    {$FRAME_RATE 30}
     
    type
     
      TRect=class(Rectangle)
       constructor Create(x, y, width, height: Integer);
       top,left,right,Bottom:integer;
      end; 
     
      MyTextField=class(TextField)
       boundsRect:TRect;
       constructor Create(Parent: MovieClip; Name: string; Depth, Left, Top, Width, Height: Number);
      end;   
     
      mymovie=class(movieclip)
       ptmouse:Point;
       myrect:TRect;
       Format1: TextFormat;
       Format2: TextFormat;
       Field: MyTextField;
       constructor Create;
       procedure onEnterFrame;
      end; 
     
    function ptinrect(pt:Point;RECT:TRect):Boolean;
    begin
     if (pt.x>=rect.left) and (pt.x<=rect.right) and (pt.y>=rect.top) and (pt.y<=rect.Bottom)  then  result:=true else result:=False;
    end;    
     
     
    constructor TRect.create(x, y, width, height: Integer);
    begin
     Inherited Create(x,y,width,height);
     left:=x;
     top:=y;
     right:=x+width;
     bottom:=y+height;
    end;
     
    constructor MyTextField.Create(Parent: MovieClip; Name: string; Depth, Left, Top, Width, Height: Number);  
    begin
     inherited Create(Parent,name,Depth,Left, Top, Width, Height);
     boundsRect:=TRect.Create( floor(Left),floor(Top), floor(Width),floor( Height)); //pas joli, ce serait plus pratique si les paramètres de rectangle étaient en number
    end;
     
     
    constructor mymovie.Create;
    begin
     inherited Create(nil,'mymovie',1); 
     Format1 := TextFormat.Create('Arial', 25, $000000,true,false,true);
     Format2 := TextFormat.Create('Arial', 25, $ff0000,true,false,true);
     Field :=MyTextField.Create(self, '', 1, 10,10,250,40); 
     Field.SetNewTextFormat(Format1);
     Field.Text:='mon futur lien';
    end;
     
     
    procedure Mymovie.onEnterFrame;
    begin
      ptmouse:=Point.Create(_xmouse,_ymouse);
      //si les ccords de la souris appartiennent à Field alors changer la couleur
      if ptinrect(ptmouse,Field.boundsRect) then Field.SetNewTextFormat(Format2) else   Field.SetNewTextFormat(Format1);
      Field.Text:='mon futur lien';
    end;
     
     
    begin
      mymovie.Create;
    end.

  5. #5
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Oui, en fait Flash ne distingue pas réellement Integer de Double, ce sont tous des Number.

    là aussi j'hésite à introduire un type système Number qui serait indifféremment un entier ou un double. Pour l'instant je déclare simplement Number=Double et j'utilise Number partout dans les déclarations.

    ça fonction bien, sauf qu'il faut utiliser Floor() pour passer de Number à Integer...mais c'est assez logique finalement.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    Oui, ça j'avais compris mais ma question est pourquoi avoir mis rectangle en integer alors que tout le reste est en Double (Number).
    Ce n'est pas pratique...ajout des floors qui paraissent inutile si rectangle était lui aussi en Number...je ne vois pas l'utilité de l'integer dans rectangle...
    C'est ça mon interrogation...


  7. #7
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Ah ! tu parles de Flash8.pas

    ben c'est juste que je ne l'ai pas retravaillée complètement, elle ne devrait utiliser que des Number
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  8. #8
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    Oui, je parlais de Flash8... Ok pas de soucis...je croyais qu'il y avait une impossibilité de le faire ou une raison valable pour le garder en integer...

    Tout en number, ce serait encore mieux...

    merci et bonne journée


  9. #9
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    Pour terminer et conclure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    program survol;
     
    uses Flash8;
     
    {$FRAME_WIDTH  545}
    {$FRAME_HEIGHT 150}
    {$BACKGROUND  $FAEBD7}
    {$FRAME_RATE 30}
     
    type
     
      TRect=class(Rectangle)
       constructor Create(x, y, width, height: Integer);
       top,left,right,Bottom:integer;
      end; 
     
      MyTextField=class(TextField)
       boundsRect:TRect;
       constructor Create(Parent: MovieClip; Name: string; Depth, Left, Top, Width, Height: Number);
      end;   
     
      mymovie=class(movieclip)
       ptmouse:Point;
       myrect:TRect;
       Format1: TextFormat;
       Format2: TextFormat;
       Field: MyTextField;
       lien:movieClip;
       constructor Create;
       procedure onEnterFrame;
       procedure dopress;
      end; 
     
    function ptinrect(pt:Point;RECT:TRect):Boolean;
    begin
     if (pt.x>=rect.left) and (pt.x<=rect.right) and (pt.y>=rect.top) and (pt.y<=rect.Bottom)  then  result:=true else result:=False;
    end;    
     
     
    constructor TRect.create(x, y, width, height: Integer);
    begin
     Inherited Create(x,y,width,height);
     left:=x;
     top:=y;
     right:=x+width;
     bottom:=y+height;
    end;
     
    constructor MyTextField.Create(Parent: MovieClip; Name: string; Depth, Left, Top, Width, Height: Number);  
    begin
     inherited Create(Parent,name,Depth,Left, Top, Width, Height);
     boundsRect:=TRect.Create( floor(Left),floor(Top), floor(Width),floor( Height)); //pas joli, ce serait plus pratique si les paramètres de rectangle étaient en number
    end;
     
     
    constructor mymovie.Create;
    begin
     inherited Create(nil,'mymovie',1); 
     lien:=MovieClip.Create(self,'',1);
     lien.onPress:=dopress;
     Format1 := TextFormat.Create('Arial', 25, $000000,true,false,true);
     Format2 := TextFormat.Create('Arial', 25, $ff0000,true,false,true);
     Field :=MyTextField.Create(lien, '', 1, 10,10,250,40); 
     Field.SetNewTextFormat(Format1);
     Field.Text:='mon futur lien';
    end;
     
     
    procedure Mymovie.onEnterFrame;
    begin
      ptmouse:=Point.Create(_xmouse,_ymouse);
      //si les ccords de la souris appartiennent à Field alors changer la couleur
      if ptinrect(ptmouse,Field.boundsRect) then Field.SetNewTextFormat(Format2) else   Field.SetNewTextFormat(Format1);
      Field.Text:='mon futur lien';
    end;
     
    procedure Mymovie.dopress;
    begin
     getURL('www.developpez.com','','');
    end;
     
     
    begin
      mymovie.Create;
    end.
    @+

  10. #10
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Beau travail !

    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  11. #11
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    merci, mais tu participes largement aussi à l'avancement des connaissances sur flashpascal, c'est bien. Chacun y trouve son compte...
    Dommage que l'on ne soit encore que deux à s'investir dessus...

    @+

  12. #12
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Archimède Voir le message
    Dommage que l'on ne soit encore que deux
    Deux, c'est déjà une équipe.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème couleur d un bouton hover en CSS sous Mac
    Par saimonesays dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 08/10/2010, 00h52
  2. [CSS] a:hover, border et IE
    Par PatHibulaire dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 04/10/2005, 21h50
  3. [html][Css] Hover: Bug bizare
    Par méphistopheles dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 03/10/2005, 17h59
  4. [CSS] Effet de hover qui ne fonctionne pas sous IE
    Par Ricou13 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 14/06/2005, 09h39
  5. [CSS] balise:hover
    Par canabral dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 22/04/2005, 16h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo