Machine à dessiner

Objectifs

Faire analyser l'influence de paramètres sur la construction d'un dessin. Appréhender les transformations géométriques planes.

Il faudrait sans doute deux versions, l'une pour les tableaux interactifs, l'autre pour un travail individuel en salle info.

Scénario

Un clip contenant le dessin de base, une occurence transparente clip_mc est déposée sur la scène
Un bouton des_btn va déclencher la fonction d'analyse des données et de génération du dessin.
Six zones de saisies de valeurs sont affectées à des variables.
Le fichier fla est ici, vous pouvez modifier la chouette que j'ai essayé de dessiner. Le fichier fini est ici !

Tout le script qui est sur l'image 1 est ici commenté

var nb:Number;
var ro:Number;
var dx:Number;
var dy:Number;
var tx:Number;
var ty:Number;
Déclaration des six variables : nombre de dessins, rotation en degrés, déplacement suivant l'axe des x ou des y (translation), agrandissement suivant les axes.
_root.des_btn.onRelease = function() {

nb = Number(nomb_txt.text);
if (nb>50 || nb<2 || isNaN(nb)) { nb = 2; }
ro = Number(ro_txt.text);
if (isNaN(ro)) { ro = 0; }
dx = Number(dx_txt.text);
if (isNaN(ro)) { dx = 0; }
dy = Number(dy_txt.text);
if (isNaN(dy)) { dy = 0; }
tx = Number(tx_txt.text);
if (isNaN(tx)) { tx = 0; }
ty = Number(ty_txt.text);
if (isNaN(ty)) { ty = 0; }

Le relachement du bouton va à l'aide d'une déclaration de fonction, passer les valeurs saisies aux variables et analyser leur validité.

 

 

Pour toutes les variables, il faut éviter une saisie qui ne soit pas numérique.

Pour le nombre de dessins, il faut d'une part éviter une division par 0 (nb>2) d'autre part limiter la boucle de calcul for qui suit, j'ai arbitraiement choisi 50 (nb>50).

for (var i = 1; i<=nb; i++) {
_root.clip_mc.duplicateMovieClip("clip"+i+"_mc", i);
_root["clip"+i+"_mc"]._x = 50+dx*i;
_root["clip"+i+"_mc"]._y = 200+dy*i;
_root["clip"+i+"_mc"]._alpha = (90*i+10-100*nb)/(1-nb);
_root["clip"+i+"_mc"]._rotation = ro*i;
_root["clip"+i+"_mc"]._height = 30+tx*i;
_root["clip"+i+"_mc"]._width = 30+ty*i;
}

La variable locale i sera incrémentée jusqu'à ce qu'elle atteigne la valeur nb. Pour chaque valeur de i une copie du dessin duplicateMovieClip("clip"+i+"_mc", i) sera générée sur la scène. Pour chaque image, les paramètres définiront la position, la transparence, la rotation et la taille. La transparence permet de voir l'évolution du dessin final.

En modifiant quelque peu les formules il est possible d'avoir des transformations non linéaires.

Evolutions

Un outil pour pouvoir dessiner son image ? ...

Retour au menu page suivante

Jean.delerue@@inln.cnrs.fr corrigez l'adresse électronique, l'erreur est volontaire, j'aimerai éviter les spam ...