Outils du site


tutoriels:application_contenant_iep

Créer une application contenant Instrumenpoche

Ce document explique comment utiliser et paramétrer Instrumenpoche dans une animation Flash.

Pour toute la suite, on suppose qu'Instrumenpoche est installé dans un dossier nommé iep/, ce dossier étant au même niveau que l'animation Flash.

Chargement

Pour utiliser Instrumenpoche, il suffit de créer un clip quelconque et d'y charger iep.swf :

var iep = _root.createEmptyMovieClip("iep", 92);
iep.loadMovie("iep/iep.swf");

NB : le nom de variable Instrumenpoche est réservé. Voir plus bas pour son utilisation.

Préambule

Le fichier .fla qui va charger instrumenpoche doit contenir plusieurs composants utilisés par instrumenpoche. Pour cela, il faut ouvrir la fenêtre “composants” puis faire glisser sur la scène les composants “window”, “textarea”, “radiobutton” et “numericstepper”. On peut ensuite les effacer. Cette manipulation aura eu pour effet de les placer dans la bibliothèque. Ils pourront alors être utilisés par iep.swf.

Paramétrage

Avant de charger iep.swf, on peut prédéfinir des paramètres. Pour cela, on crée un objet qui doit se nommer iep_parametres et être un enfant du parent du clip contenant Instrumenpoche.

var iep_parametres:Object = new Object();

On affecte ensuite à cet objet les paramètres qu'on veut faire passer à Instrumenpoche. Par exemple :

iep_parametres.image_direct = 12;

Liste des paramètres

Les paramètres qu'on peut ajouter à iep_parametres sont les suivants, avec leurs valeurs par défaut :

    * abscisse_init = 200;    // abscisse d'un instrument lors de son apparition sur la scene
    * ordonnee_init = 400;    // ordonnee d'un instrument lors de son apparition sur la scene
    * geometrie = true;     // indique si on peut manier les instruments
    * langue = "fr";    // la langue de l'interface
    * abscisse_menu = 50;  // abscisse à laquelle apparaissent les menus
    * ordonnee_menu = 10; // ordonnée à laquelle apparaissent les menus
    * apercu = false; // le mode apercu montre juste la figure final
    * apercu_image = 0; // l'étape à laquelle on montre l'aperçu éventuel
    * image_direct = 0; // la première étape qui apparait, si une animation est chargée
    * vecteur = false; // option de dessin
    * pointille = false; // option de dessin
    * couleur = 0; // option de dessin : couleur du trait
    * epaisseur = 0; // option de dessin :épaisseur du trait
 
          /***************************
          OPTIONS DU RAPPORTEUR
          ***************************/
    * options_rapporteur_circulaire = false; // ciculaire sans possibilité de changer
    * options_rapporteur_semi = false;  // semicirculaire sans possibilité de changer
    * options_rapporteur_double = false; // double grad sans possibilité de changer
    * options_rapporteur_simple = false;  // simple grad sans possibilité de changer
    * options_rapporteur_fixe = false; // fixe sans possibilité de changer
    * options_rapporteur_sanszoom = false; // pas de zoom possible
    * options_rapporteur_sanscoordonnees = false; // mettre true pour masquer les coordonnées
 
          /*****************************
          OPTIONS DE LA REGLE
          ****************************/
    * options_regle_fixe = false; // fixe sans possibilité de changer
    * options_regle_sanstrace = false;  // sans possibilité de tracer le long
    * options_regle_sansgraduation = false; // pas de graduation
    * options_regle_sanscoordonnees = false;
 
          /*****************************
          OPTIONS DE L'EQUERRE
          ****************************/
    * options_equerre_fixe = false;  // fixe sans possibilité de changer
    * options_equerre_sanstrace = false; // sans possibilité de tracer le long 
    * options_equerre_sanszoom = false;  // pas de zoom possible
    * options_equerre_sanscoin = false;  // pas de sommet à l'angle droit
    * options_equerre_sansgraduation = false;
 
          /*****************************
          OPTIONS DU COMPAS
          ****************************/
    * options_compas_fixe = false; // fixe sans possibilité de changer
    * options_compas_ecartfixe = false; // écartement fixe
    * options_compas_sansgraduation = false;
 
          /*****************************
          OPTIONS DE LA REGLE-EQUERRE
          ****************************/
    * options_requerre_fixe = false; // fixe sans possibilité de changer
    * options_requerre_sanszoom = false; // pas de zoom possible
    * options_requerre_sansgraduation = false;
 
          /************************
          OPTIONS DU CRAYON
          ************************/
    * options_crayon_libre = false; // tracé libre sans possibilité de changer
    * options_crayon_droit = false;    // tracé droit sans possibilité de changer
    * options_crayon_sansgraduation = false;
 
          /**************************
          OPTIONS DES POINTS
          ***************************/
    * options_point_sansinstrument = false; // on interdit de placer les instruments sur les points
    * options_point_sanstrace = false; // sans possibilité de tracer de point à point
    * // on ne montre pas les coordonnées des points dans le curseur
          options_point_sanscoordonnees = false
    *  // les points ne peuvent pas être déplacés
          options_point_fixe = false;
 
          /*********************
          OPTIONS POUR LE SCRIPT
          **********************/
    * options_script_nonmodifiable = false;
 
          /*******************
          OPTIONS DES IMAGES
          *********************/
          // les images ne peuvent pas être déplacées à la souris
    * options_image_sourisfixe = false;
          // a-t-on les ascenseurs ?
    * options_image_sansascenseur = false;
          // empêche-t-on la possibilité de zoomer ?
    * options_image_sanszoom = false;
 
 
    * liste_instruments = ["crayon","compas","regle","equerre","rapporteur","requerre"]; // les instruments disponibles
    * boutons_geo = ["pilote","point","texte","repere","palette","image","annuler","restaurer","tempo","script","permuter","valider"]; // les boutons additionnels du menu de géométrie
    * boutons_lecteur = ["debut", "precedente","pause","lecture","suivante","fin","script","permuter"]; // les boutons du menu de lecture 

Chargement de fichiers

On peut également prévoir que iep.swf charge des fichiers en définissant :

    * iep_anim // nom d'un fichier xml d'animation instrumenpoche
    * iep_config // nom d'un fichier xml de configuration d'instrumenpoche

NB : iep_config est inutile si on définit les paramètres dans iep_parametres en interne comme expliqué ci-dessus. Pour éviter de charger un fichier xml externe pour l'animation, on peut procéder ainsi après avoir chargé iep.swf :

// je mets iep en mode lecture, c'est surtout important pour les points créés par iep
Instrumenpoche.geometrie = false;
// je remplace le script qui est dans iep par le mien
ScriptIep.code_xml = new XML("<?xml version='1.0' encoding='ISO-8859-1'?><INSTRUMENPOCHE version='2'><action mouvement='montrer' objet='crayon' /><action abscisse='273' ordonnee='225' mouvement='translation' objet='crayon' /></INSTRUMENPOCHE>");
// je demande à iep de dessiner la figure qui correspond au script
LecteurIep.place_direct(ScriptIep.code_xml.firstChild.childNodes.length);
// je me remets en mode géométrie : on peut maintenant bouger les instruments avec la souris
Instrumenpoche.geometrie = true;

Affichage d'une animation

Une fois qu'instrumenpoche est chargé, on peut lui faire afficher une animation décrite par un script mon_script. Il suffit d'appeler la fonction LecteurIep.lecture_apres_chargement(mon_script). Par exemple sur un bouton en actionscript on mettra :

on (click) {
    LecteurIep.lecture_apres_chargement("<INSTRUMENPOCHE version='2'><action mouvement='montrer' objet='crayon' /><action mouvement='translation' objet='crayon' abscisse='50' ordonnee='32' /></INSTRUMENPOCHE>");
}

Paramétrage a posteriori

Tous les paramètres qu'on peut définir dans l'objet iep_parametres sont stockés par instrumenpoche dans l'objet nommé Instrumenpoche. Ils peuvent être modifiés à tout moment.

Par exemple, on peut choisir que les tracés futurs soient en bleu en programmant :

Instrumenpoche.couleur = 0x0000ff;

Accès aux instruments

Chaque instrument est un clip, on peut donc lire ou modifier ses propriétés _x , _y, _visible etc. On peut y accéder ainsi :

  • le crayon : CrayonIep.crayon
  • le compas : CompasIep.compas
  • la règle : RegleIep.regle
  • le rapporteur : RapporteurIep.rapporteur
  • l'équerre : EquerreIep.equerre
  • la règle-équerre : RequerreIep.requerre

Exemple : si on veut tester la position du compas, on étudie les valeurs de CompasIep.compas._x et CompasIep.compas._y.

Actualisation des instruments

On peut avoir besoin de replacer les instruments à leur position d'origine, ou de modifier la liste des instruments accessibles ou encore de modifier leurs options (comme Instrumenpoche.options_rapporteur_fixe par exemple). Dans ce cas, il faut :

  1. Modifier les options éventuellement
  2. Recréer les instruments en faisant : var instrus = new InstrumentsIep();
  3. Si on a modifié la liste des instruments, il faut mettre le menu à jour par :
    var menu_geo = new MenuIep(Instrumenpoche.racine_iep.iep,"menu_geo",100,tab);

    où tab est le tableau listant les instruments disponibles et les boutons du menu de géométrie.

Exemple : Si je veux ne donner accès qu'au compas et au rapporteur sans modifier le reste, je programme :

    Instrumenpoche.liste_instruments = ["compas","rapporteur"];
  // pour créer les instruments
  var instrus = new InstrumentsIep(Instrumenpoche.racine_iep.iep, Instrumenpoche.liste_instruments);
  // pour recréer le menu
  var tab = Instrumenpoche.liste_instruments.concat(Instrumenpoche.boutons_geo);
  // tab contient la liste des boutons qui apparaitront dans le menu : en général, un bouton pour chaque instrument plus des boutons supplémentaires
  var menu_geo = new MenuIep(Instrumenpoche.racine_iep.iep,"menu_geo",100,tab);

Exemple : Si on veut juste replacer les instruments à leur position d'origine, on fait :

var instrus = new InstrumentsIep(Instrumenpoche.racine_iep.iep, Instrumenpoche.liste_instruments);

Tests

Un test sur le script contenu dans instrumenpoche se fait en appelant la fonction TestIep.est_dans_iep(); qui prend comme paramètre unique un objet. Cet objet admet un paramètre obligatoire, nommé objet, qui indique ce qui est testé. Les autres propriétés de cet objet dépendent de la valeur donnée à objet.

Pour l'instant, sont implémentés :

Test du tracé d'un cercle

paramètres

  • objet:“cercle”;
  • abscisse_centre, ordonnee_centre : coordonnées du centre du cercle souhaité
  • rayon : rayon du cercle souhaité
  • precision_centre : marge d'erreur accordée pour le centre, en pixels
  • precision_rayon : marge d'erreur accordée pour le rayon

renvoie

  • 1 si un bon cercle est tracé
  • 2 si un bon cercle, mais incomplet, est tracé
  • 0 sinon

Exemple :

var test = TestIep.est_dans_iep({objet:"cercle", abscisse_centre:200, ordonnee_centre:100, rayon:90, precision_centre:2, precision_rayon:2});
 
    if(test == 1){
 
        trace("juste !")
 
    }else if(test == 2){
 
        trace("tracé incomplet.");
 
    }else{
 
        trace("faux, recommencez");
 
    }

Test du placement d'un point

paramètres :

  • objet:“point”;
  • abscisse,ordonnee : coordonnées du point voulu
  • precision : la distance entre le point placé et le point voulu doit être inférieure à ce nombre
  • nom : le point peut être nommé, paramètre facultatif : s'il est absent, on accepte n'importe quel nom

renvoie :

  • 1 si le bon point est placé
  • 2 si le bon point est placé, mais mal nommé
  • 0 sinon

Exemple : Construction de racine carrée de deux à la règle et au compas

Test de l'existence d'un segment tracé avec le crayon

paramètres :

  • objet : “segment_crayon”
  • abscisse1, ordonnee1,abscisse2, ordonnee2 : coordonnées des extrémités du segment
  • precision : la distance entre le point placé et le point voulu doit être inférieure à ce nombre

renvoie :

  • 1 si le bon segment est tracé
  • 0 sinon

Exemple : http://instrumenpoche.sesamath.net/v2/exercices/base/segment.html

Test de l'existence d'un segment de longueur donnée tracé avec le crayon

paramètres :

  • objet : “longueur_segment_crayon”
  • longueur : longueur demandée, en pixels
  • precision : l'écart accepté entre la longueur voulue et celle du segment effectivement tracé, en pixels

renvoie : le nombre de segments de la bonne longueur qui sont tracés

Exemple : http://instrumenpoche.sesamath.net/v2/exercices/base/longueur_segment.html

Macros

La classe MacroIep contient des macros pour Instrumenpoche, c'est-à-dire des fonctions qui facilitent la création de morceaux de scripts. Il s'agit d'un ensemble de fonctions actionscript auxquelles on passe des paramètres, et qui renvoient des morceaux de script instrumenpoche correspondant aux constructions voulues, sous forme de texte (objets de type String).

Construire un point équidistant

Cette fonction construit au compas un point M équidistant de deux autres A et B donnés en paramètres.

renvoie un tableau [script de la construction, abscisse du point construit, ordonnée du point construit], ce qui permet de récupérer les coordonnées de ce point pour un usage ultérieur

paramètres obligatoires : xa,ya,xb,yb, les coordonnées des deux points A et B

paramètres facultatifs (à passer dans l'objet 'parametres') :

  • parametres.distance : la distance rajoutée à la demi-distance entre les deux extrémités (défaut : 20)
  • parametres.direct : si le triangle ABM est direct (défaut : true)
  • parametres.couleur : la couleur du tracé (défaut : Instrumenpoche.couleur)
  • parametres.epaisseur : l'épaisseur du tracé (défaut : Instrumenpoche.epaisseur)
  • parametres.angle : l'angle parcouru par le compas avant et après le point d'intersection (défaut : 10, ce qui signifie que le compas tracera des arcs de 20°)
  • parametres.id1 et parametres.id2 : les identifiants des deux arcs de cercles tracés.

appel de la fonction :

MacroIep.placer_point_equidistant(xa,ya,xb,yb,parametres)
tutoriels/application_contenant_iep.txt · Dernière modification : 31/12/2010 15:20 de 127.0.0.1