Petite animation graphique autour du curseur dans une picwin

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 491 fois - Téléchargée 27 fois

Contenu du snippet

Cette astuce vous montre comment faire suivre votre curseur par des cercles. Les cercles ont une couleur aleatoire et leur diametre grossis grace a une "boucle temporelle".
Ce n'est pas d'une grande utilité, on va dire que c'est sympatique et presque amusant. Ceci dit ça peut toujours etre interessant.

Source / Exemple :


;idée et code original de Kerrigan, optimisation par Chang-FU
alias cercle { 
  ;$6 coordonnée y
  ;$5 coordonnée x
  ;$4 durée d'execution 
  ;$3 epaisseur du cercle 
  ;$2 taille maxi des cercles 
  ;$1 nom de la fenetre 
  ;timerfin stoppe la boucle temporelle a un temps en miliseconde donné
  ;timercercle permet de faire grossir les cercle je l'ai mis en -m 0 1 par comodité
  ;color(background) renvoi la couleur du fond
  $parse($1,$2,$3,$4,$5,$6) 
  hadd cercle itr 1 
  hadd cercle couleur $r(1,15) 
  window -akp +b @ $+ $hget(cercle,€1) -1 -1 200 200 
  hadd cercle window @ $+ $hget(cercle,€1) 
  drawdot -n @ $+ $hget(cercle,€1) $color(background) 300 100 100
  .timercercle -m 0 1 cercle_2 $hget(cercle,€5) $hget(cercle,€6)
  .timerfin -m 1 $hget(cercle,€4) continue
} 

alias -l cercle_2 { 
  ;fonction qui trace les cercles
  ;en fait un cercle c un point blanc plus petit qu'un point de couleur plus gros,
  ;resultat on a un jolie cercle dont on peut definir l'epaiseur
  if ($hget(cercle,itr) > $hget(cercle,€2)) { 
    ;boucle qui reinitialise le processus
    drawdot -n @ $+ $hget(cercle,€1) $color(background) $calc($hget(cercle,itr) + $hget(cercle,€3)) $1 $2 
    hadd cercle itr 1 | hadd cercle couleur $r(1,15) 
  } 
  drawdot -n @ $+ $hget(cercle,€1) $hget(cercle,couleur) $calc($hget(cercle,itr) + $hget(cercle,€3)) $1 $2 
  drawdot -n @ $+ $hget(cercle,€1) $color(background) $hget(cercle,itr) $1 $2 
  drawline @ $+ $hget(cercle,€1) 
  hadd cercle itr $calc($hget(cercle,itr) +1) 
} 

alias -l parse { 
  ;verifie les erreurs et s'il y en a renvoi alors une valeur par defaut
  ;utile uniquement au demarage mais pour ceux qui veulent 
  ;develloper le code c bon a savoir
  if ($hget(cercle).size > 0) { hfree cercle } 
  hmake cercle 10
  ;etablissement des valeurs par defaut 
  hadd cercle €4 $iif($4,$4,30) | hadd cercle €3 $iif($3,$3,2) 
  hadd cercle €2 $iif($2,$2,20) | hadd cercle €1 $iif($1,$1,Cercle) 
  hadd cercle €5 $iif($5,$5,100) | hadd cercle €6 $iif($6,$6,100)
} 

;cet alias sert a faire les cercles autour du curseur a l'arret
;grace au valeurs par defaut que retourne le parseur les cercles sont mis au
;centre de la fenetre quand le cuseur n'est plus dans @cercle
alias continue { .timercercle off | $cercle(cercle,40,1,250,$mouse.x,$mouse.y) }

menu @cercle {
  ;evenement qui permettent de suivre la souris tout en traçant les cercles
  ;cercle est le nom de la fenetre
  ;40 la taille maximum du cercle
  ;1 est l'epaisseur du cercle
  ;150 temps en miliseconde qui indique la duré d'execution
  ;$mouse.x et $mouse.y renvoi la position de la souris
  mouse : { 
    if ( !$timer(cercle) ) { $cercle(cercle,40,1,150,$mouse.x,$mouse.y) }
  }
  fermer Fenetre : {  .timercercle off | .timerfin off | window -c $active }
}

Conclusion :


Copier tout dans vos remotes ensuite :
Pour lancer la commande tapez /cercle et deplacez le curseur dans la fenetre

J'ai mis des commentaires histoire de ne pas etre perdu dans le code et pour que
vous puissiez l'adapter sans difficulté a quelque chose de plus utile

l'astuce marche quelque soit la couleur du fond ...
en jouant sur les parametre vous pouvez utiliser cette astuce comme un "focus" dans une picwin pour mettre des elements de la fenetre en evidence

si vous maitrisez le code vous pouvez toujours essayer de mettre du texte dans les cercles. Ca ne devrait pas etre trop difficil a mon avis.

J'espere que cette petite astuce vous plaira

A voir également

Ajouter un commentaire

Commentaires

SkulTkiD
Messages postés
2
Date d'inscription
mercredi 18 août 2004
Statut
Membre
Dernière intervention
22 octobre 2004

Original ... ( je sais pas si sa vien de moi ) mais sa mouvre une _fenêtre blanche_ et les rond naparaissent que dans celle là ..... [explication ?]

Continue comme sa tu fais du bon boulot ! :)
tchuzz ++
Kerrigan
Messages postés
708
Date d'inscription
lundi 15 juillet 2002
Statut
Membre
Dernière intervention
17 mars 2005

je suis touché cilene290677. Je compte pas m'arreter. Dit a tes potes de pas se tuer il feront mieux de tenter des trucs de leur coté et tu sais ma seul "force" ( si on peut dire ça ) c'est d'allier mon cours de math a mes codes mirc ...
Mais bon ça m'arrive de poster des trucs nuls qui servent a rien :))
cilene290677
Messages postés
1
Date d'inscription
jeudi 26 février 2004
Statut
Membre
Dernière intervention
1 mars 2004

Non serieu la fo qutarrete quoi!G deja deu potes qui pensait savoir programmé qui ce sont suicidé rien qu'en lisant tes sources!Celle qui les a le plus tuer c la matrice.Ch'ai pas il ont crié au miracles.Non serieu bonne tronche je sai meme pas si l'idée me serait venu .Fait en plein d'autre tu arrache mon gars
cs_Naza
Messages postés
179
Date d'inscription
mercredi 5 novembre 2003
Statut
Membre
Dernière intervention
23 juin 2005
1
C'est très originale mais loin d'être utile..
Pas mal
Kerrigan
Messages postés
708
Date d'inscription
lundi 15 juillet 2002
Statut
Membre
Dernière intervention
17 mars 2005

Hey je constate qu'il y en a qui save lire :) d'ailleur on est pas obliger d'etre dans la fenetre pour voir les cercles puisque le parseur va remettre l'animation au centre de la window si le curseur n'est pas dans la fenetre ( cela ne marche pas si le curseur est dans le status je comprend pas pourkoi...)

Pour fermer la fenetre faite un click droit dedans et tout s'arrete.

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.