Un curseur de souris qui bouge ;o) en plus la class est reutilisable...

Soyez le premier à donner votre avis sur cette source.

Vue 36 804 fois - Téléchargée 1 134 fois

Description

ben g trouver sa rigolo a faire et comme sa ma pas pris ;o) des heures ;)
g meme pri la peine de metre des commentaire a chaque methode...
evidement comme dabitude c tres epurer bien que la class soit utilisable tel que
elle est tout a fait ameliorable .. ;o) et comme javai pas le courage de faire 20 image pour une ptt anime ;o) g fait une ptt methode qui genere automatikement les image ;o) c etai moin lon a faire... ;o) et sa donne en + un ptt exemple de l utilisation des transformation affine de java2D ;o)

Source / Exemple :


import java.awt.Component;
import java.awt.Cursor;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;

/**

  • @author ludo
  • implement un curseur de souris qui peu bouger
  • le mouvement du curseur est crer a partir d une seul image ou
  • peu etre init a partir d un tableau d image
  • /
class LudoCursor extends Thread { private Component parent = null; // memo le proprio du cursor private Cursor cursor = null; private Image[] images = null; private static final int DEFAULTNUMBERIMAGE = 20; // nombre d image par defaut private int delay = 0; // pause entre chac image private int idx = 0; // index courant ds le tableau d image private Point hotSpot = new Point( 0, 0 ); private boolean end = false; // stop l nimation private int incIdx = 1; // increment d index pour bouger la forme /**
  • implement un cursor mouvant a partir d une seule image
  • /
public static LudoCursor ActiveLudoCursor( Component component, Image image, Point hotSpot, int delay ) { return new LudoCursor( component, image, hotSpot, delay ); } /**
  • implement un cursor mouvant a partir d une sequence d image
  • /
public static LudoCursor ActiveLudoCursor( Component component, Image[] images, Point hotSpot, int delay ) { return new LudoCursor( component, images, hotSpot, delay ); } /**
  • desactive le thread d un cursor
  • /
public static void DesactiveLudoCursor( LudoCursor lc ) { lc.end = true; } /**
  • genere automatikement un curseur mobile en le faisant gonfler et diminuer
  • /
public LudoCursor( Component parent, Image[] images, Point hotSpot, int delay ) { this.parent = parent; this.hotSpot = hotSpot; this.delay = delay; this.images = images; start(); // lance le thread } /**
  • genere automatikement un curseur mobile en le faisant gonfler et diminuer
  • /
public LudoCursor( Component parent, Image image, Point hotSpot, int delay ) { this( parent, CreateDefaultCursors( image, hotSpot, DEFAULTNUMBERIMAGE ) , hotSpot, delay ); } /**
  • fabrik toute les image a partir de l image de depard
  • /
private static Image[] CreateDefaultCursors( Image image, Point hotSpot, int nombreImages ) { BufferedImage[] bi = null; // init le tableau d image du curseur try { bi = new BufferedImage[ nombreImages ]; double factor = 1. / (double)nombreImages; for (int i = 0; i < nombreImages; i++) { bi[ i ] = new BufferedImage( 32, 32, BufferedImage.TYPE_4BYTE_ABGR ); Graphics2D g = bi[ i ].createGraphics(); AffineTransform currentAff = new AffineTransform(); currentAff.translate( hotSpot.x, hotSpot.y ); double d = (i+1) * factor; currentAff.scale( d, d ); currentAff.translate( -hotSpot.x, -hotSpot.y ); g.transform( currentAff ); // aplik la ranformation g.drawImage( image, 0, 0, null ); // dessine le curseur } } catch (Exception e) { System.out.println("Erreur : " + e); } return bi; } /**
  • gestion du chagemetn d image du cursor
  • /
public void run() { try { while( !end ) { if ( parent != null ) { Cursor c = Toolkit.getDefaultToolkit().createCustomCursor( images[ idx ], hotSpot, "ludoCursor" ); idx += incIdx; if ( idx == 0 ) { idx = 1; incIdx = 1; } else if ( idx == (images.length-1) ) { incIdx = (images.length-1); incIdx = -1; } parent.setCursor( c ); // init le cursor Thread.sleep( delay ); // pause } // if parent } // while } catch (Exception e) { System.out.println( "error : " + e ); } } }

Conclusion :


bon ds le zip g aussi mit la class qui permet de voir un apercu de curseur animee

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
16 mars 2008

Ne marche pas pour KDE !
Messages postés
2113
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
11
ben normalement y a tous pour l exemple ;o) ds le zip

verifi ta conf et la presence des +class... ;o)
++
Messages postés
2
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
21 juin 2004

rien ne marche chez moi;
il manque la ressource "ludoCursor"

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.