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

Vue hybride

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    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
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    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 Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

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

    @+

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    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
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    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 Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    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...


+ 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