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
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.