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 :

Objet Mouse et curseur personnalisé


Sujet :

Flash Pascal

  1. #1
    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 Objet Mouse et curseur personnalisé
    Pour ne pas tout mélanger je reprend ma réponse dans un nouveau thread

    Voici comment créer un curseur souris personnalisé.
    (l'objet Mouse sera intégré dans Flash8.pas lors de la prochaine mise à jour)

    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
     
    program curseur;
     
    uses
      Flash8;
     
    type
      Mouse = external class
      { events:
        procedure onMouseDown;
        procedure onMouseMove;
        procedure onMouseUp;
        procedure onMouseWheel(delta: Number = 0; scrollTarget: TObject = nil);
      }
        class procedure addListener(listener: TObject);
        class function hide: Number;
        class function removeListener(listener: TObject): Boolean;
        class function show: Number;
      end;
     
      TCursor = class(MovieClip)
        constructor Create;
        procedure onMouseMove;
      end;
     
    constructor TCursor.Create;
    begin
      inherited Create(nil, 'Cursor', 1);
      lineStyle(1,0);
      beginFill($ffffff);
      lineTo(+5,+10);
      lineTo(+10,+5);
      lineTo(0,0);
      Mouse.addListener(Self);
      Mouse.Hide;
    end;
     
    procedure TCursor.onMouseMove;
    begin
    // on prend la position de la souris relativement à _root
      _x := _root._xmouse;
      _y := _root._ymouse;
    end;
     
    begin
      TCursor.Create;
    end.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  2. #2
    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
    Ah oui, bien vu !

    Parfait, impeccable

    Et pour faire un zoom, l'évenement onMouseWheelDown (et évidemment onMouseWheelup) serait bien utile...
    Je présume que cet événement est intégré à movieclip en ActionScript2 non ?

    merci Paul

  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
    Citation Envoyé par Archimède Voir le message
    Ah oui, bien vu !

    Parfait, impeccable

    Et pour faire un zoom, l'évenement onMouseWheelDown (et évidemment onMouseWheelup) serait bien utile...
    Je présume que cet événement est intégré à movieclip en ActionScript2 non ?

    merci Paul
    ps: Ok, je viens de voir le onMouseWeel dans Mouse donc avec Addlistener() parfait... Excuse, j'avais regardé un peu vite.

  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
    Comment se débarrasser du curseur du textField qui se superpose au nouveau curseur ?

    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
     
    unit UCursor;
     
    interface
     
    uses
      Flash8;
     
    type
      Mouse = external class
        class procedure addListener(listener: TObject);
        class function hide: Number;
        class function removeListener(listener: TObject): Boolean;
        class function show: Number;
      end;
     
      TCursor = class(MovieClip)
        constructor Create(mc:movieclip);
        procedure onMouseMove;
      end;
     
    implementation
     
    constructor TCursor.Create(mc:movieclip);
    begin
      inherited Create(mc, 'Cursor',getNextHighestDepth());
      lineStyle(1,0);
      beginFill($ffffff);
      lineTo(+5,+10);
      lineTo(+10,+5);
      lineTo(0,0);
      Mouse.addListener(mc);
      Mouse.Hide;
    end;
     
    procedure TCursor.onMouseMove;
    begin
    // on prend la position de la souris relativement à _root
      _x :=_root._xmouse;
      _y :=_root._ymouse;
    end;
     
     
    end.
    PROGRAM :

    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
    program numerisation_de_l_information;
     
    uses
      Flash8,URealmovie,UCursor;
     
    {$FRAME_WIDTH   500}
    {$FRAME_HEIGHT  550}
    {$FRAME_RATE 32}
    {$BACKGROUND $dcdcdc}
     
     const frame_width=500;
           frame_height=550;
    Type
     Smiley=class(Realmovie)
      mybmp : BitmapData;
      Field:TextField;
      Font:TextFormat;
      constructor create;
      procedure onMouseMove;
      procedure draw;
     end;
     
     var curseur: TCursor;
     
    Function GetBvalue(coul:integer):integer;
    begin
     result :=coul Mod 256;
    end;
     
    Function GetGvalue(coul:integer):integer;
    begin
     result :=floor((Coul Mod 65536)/256);
    end;
     
    Function GetRvalue(coul:integer):integer;
    begin
     result :=Floor(Coul/65536);
    end;
     
     constructor Smiley.Create;
     begin
      inherited create(nil,'schema',1);
      setsize(frame_width,frame_height,0,0,10,11);
      draw;
      mybmp := BitmapData.Create(frame_width+1,frame_height+1); //obligé de le dimensionner avec un pixel supplémentaire pour voir toutes les lignes ?
      mybmp.draw(self);//On remplit le bitmap avec le contenu de smiley
      clear;//pour éviter deux couches de dessin une dans le movie et l'autre dans le bmp
      attachBitmap(mybmp,0,'',false);
      Font:=TextFormat.Create( 'Arial',16,$000000,True,False,False,'center');
      curseur:=TCursor.Create(self); //ici création du curseur
      field:=TextField.Create(self,'codeRGB',1,0,0,200,40);
      Field.setNewTextFormat(Font);
     end;
     
    Procedure Smiley.onMouseMove;
    var R,V,B:integer;
        rgb:number;
    begin
     rgb:=mybmp.GetPixel(_xmouse,_ymouse);
     R:=GetRValue(floor(rgb));
     V:=GetGValue(floor(rgb));
     B:=GetBValue(floor(rgb));
     Field.text:='( '+inttostr(R)+' , '+inttostr(V)+' , '+inttostr(B)+' )';
     Field._x:=_xmouse-60;  //avec modif de TextField _x et_y en number !
     Field._y:=_ymouse-40;
    end;
     
    procedure Smiley.draw;
    var i:integer;
    begin
     beginFill($ffff00);
     Rrectangle(3,1,7,2);
     Rrectangle(1,3,2,8);
     Rrectangle(8,3,9,8);
     Rrectangle(3,9,7,10);
     RRectangle(2,2,3,3);
     RRectangle(2,8,3,9);
     RRectangle(7,2,8,3);
     RRectangle(7,8,8,9);
     EndFill();
     beginFill($000000);
     RRectangle(3,4,4,5);
     RRectangle(4,3,6,4);
     RRectangle(6,4,7,5);
     endFill();
     beginFill($0088FF);
     RRectangle(3,6,4,7);
     RRectangle(6,6,7,7);
     EndFill();
     linestyle(1,$000000);
     for i:=0 to 10 do   Rline(i,0,i,11);
     for i:=0 to 11 do   Rline(0,i,10,i);
     linestyle(3,$FF0000);
     RRectangle(6,4,9,7);
    end;
     
    begin
     Smiley.create;
     stage.scaleMode :='noScale'; //on n'est pas en vectoriel...pour éviter les surprises dans le navigateur
    end.
    Je signale que j'ai tenté de remplacer _Root dans onMouseMove par mon movie parent mais ça ne sert à rien...Donc, j'ai gardé _root...

    De toute façon, le_root permet uniquement d'entraîner le movie qui constitue le curseur...que ce soit _root ou mon smiley, c'est pareil...

    La question se résume à comment supprimer le curceur d'un textfield, c'est tout...


    anthony

  5. #5
    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 trouvé... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      field.selectable:=false;
    salut

  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
    le fichier flash en lien pour voir visuellement mon changement de curseur ...
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [C# 2.0] Curseur Personnalisé
    Par nephhh dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/10/2008, 17h05
  2. Créer un curseur personnalisé
    Par Duan dans le forum Débuter
    Réponses: 6
    Dernier message: 19/03/2008, 19h07
  3. [CSS] [FAQ] Comment mettre un curseur personnalisé sur Firefox ?
    Par Bisûnûrs dans le forum Contribuez
    Réponses: 0
    Dernier message: 17/04/2007, 11h09
  4. [C#][Cursor] Définir un curseur personnalisé pour un contrôle
    Par nicolas.pied dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/03/2007, 03h16
  5. Ajouter un curseur personnalisé à un Control Panel
    Par nkd dans le forum Composants VCL
    Réponses: 2
    Dernier message: 18/10/2005, 23h25

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