Déplacement de calque

1- Choisissez Insertion > Calque, ou cliquez sur le bouton Calque de la palette d'objets et dessinez un calque dans la fenêtre du document.

2- Désélectionnez le calque en cliquant en-dehors de celui-ci dans la fenêtre du document.

3- Ouvrez l'inspecteur de comportements.

4- Cliquez sur le bouton + (signe plus) et choisissez l'action Déplacement de calque dans le menu déroulant Actions.
Si cette action n'est pas disponible, un calque est probablement sélectionné. Comme les calques ne prennent pas en compte les événements dans Netscape Navigator 4.0, vous devez sélectionner un autre objet - par exemple la balise BODY ou un lien (balise A) -, ou remplacer le navigateur cible par IE 4.0 dans le menu déroulants Evénements pour.

5- Dans le menu déroulant Calque, sélectionnez le calque que vous voulez rendre déplaçable.

6- Dans le menu déroulant Mouvement, sélectionnez Contraint ou Sans contrainte.
Les mouvements sans contrainte sont adaptés aux puzzles et aux autres jeux à base de glisser-déplacer. Pour les contrôles de déplacement et les objets mobiles (tiroirs, rideaux et stores), choisissez un mouvement contraint.

7- Pour la restriction de mouvement, indiquez les valeurs de déplacement admises (en pixels) dans les champs Haut, Bas, Gauche et Droite.
Ces valeurs sont relatives à la position de départ du calque. Pour contraindre un mouvement au sein d'une zone rectangulaire, indiquez des valeurs positives dans les quatre champs. Pour permettre uniquement un mouvement vertical, indiquez des valeurs positives pour Haut et Bas, et 0 pour Gauche et Droite. Pour permettre uniquement un mouvement horizontal, indiquez des valeurs positives pour Gauche et Droite, et 0 pour Haut et Bas.

8- Indiquez les coordonnées (exprimées en pixels) de la cible de dépôt dans les champs Gauche et Haut.
La cible de dépôt est le point sur lequel l'utilisateur doit "déposer" le calque. Un calque est considéré comme ayant atteint la cible de dépôt lorsque ses coordonnées d'origine (en haut à gauche) correspondent aux valeurs indiquées dans les champs Gauche et Haut. Ces coordonnées sont relatives à l'angle supérieur gauche de la fenêtre du navigateur. Cliquez sur Obtenir la position courante pour remplir automatiquement les champs avec les coordonnées actuelles du calque.

9- Indiquez une valeur (exprimée en pixels) dans le champ Aligner si dans pour déterminer la distance minimale à laquelle l'utilisateur doit approcher le calque de la cible pour que le calque soit aimantée par celle-ci.
Les valeurs importantes permettent à l'utilisateur de trouver plus facilement la cible de dépôt.

10- Pour des puzzles simples et des défilements d'images, vous pouvez vous en tenir là. Pour définir la poignée de déplacement du calque, suivre le mouvement du calque pendant qu'il est déplacé et déclencher une action lorsqu'il est déposé, cliquez sur l'onglet Avancé.

11- Pour spécifier que l'utilisateur doit cliquer dans une zone particulière du calque pour pouvoir le déplacer, choisissez Zone dans le calque dans le menu déroulant Poignée de déplacement, puis indiquez les coordonnées de l'origine (angle supérieur gauche) de la poignée de déplacement, ainsi que la largeur et la hauteur de celle-ci.
Cette option est utile lorsque l'image insérée à l'intérieur du calque contient un symbole de déplacement, par exemple une barre de titre ou une poignée de tiroir. N'activez pas cette option si vous voulez que l'utilisateur soit libre de cliquer n'importe où dans le calque pour le déplacer.

12- Choisissez, parmi les options de la zone En déplaçant, celle que vous désirez utiliser :
Activez l'option Placer le calque au premier plan, puis si le calque doit être amené au niveau le plus haut de l'ordre de superposition (Index Z) lors de son déplacement. Si vous activez cette option, utilisez le menu déroulant qui la suit pour indiquer si le calque, après avoir été "déposé", doit être laissé au niveau de visibilité le plus élevé, ou si sa position d'origine dans l'ordre de superposition doit être rétablie.
Tapez un code JavaScript ou un nom de fonction (par exemple, surveilleCalque()) dans le champ Appel JavaScript pour que ce code ou cette fonction soit exécuté en boucle pendant le déplacement du calque. Par exemple, vous pouvez écrire une fonction pour surveiller les coordonnées du calque et afficher des indications, comme "tu brûles" ou "tu t'éloignes de la cible", dans un champ texte. Voir "Collecte d'informations sur le calque déplaçable".

13- Indiquez un code JavaScript ou un nom de fonction (par exemple, evaluePosCalque()) dans le second champ Appel JavaScript. Le code ou la fonction sera exécuté lorsque le calque sera déposé. Activez l'option Uniquement si aligné si le code JavaScript indiqué ne doit être exécuté que si le calque a atteint la cible de dépôt.

14- Cliquez sur OK.

15- Vérifiez que l'événement par défaut est bien l'événement désiré.

Si ce n'est pas le cas, sélectionnez-en un autre dans le menu déroulant. Si les événements désirés n'apparaissent pas dans la liste, changez de navigateur cible dans le menu déroulant Evénements pour. N'oubliez pas que les calques ne sont pas pris en charge par la version 3.0 des navigateurs.Remarque : Vous ne pouvez pas associer l'action Déplacement de calque à un objet avec les événements onMouseDown ou onClick.
Collecte d'informations sur le calque déplaçable
Lorsque vous associez l'action Déplacement de calque à un objet, Dreamweaver insère la fonction MM_dragLayer() dans la section d'en-tête (HEAD) de votre document. Cette fonction enregistre le calque comme déplaçable, et définit trois propriétés pour chaque calque mobile - MM_LEFTRIGHT, MM_UPDOWN et MM_SNAPPED, que vous pouvez utiliser dans vos propres fonctions JavaScript pour déterminer la position horizontale et la position verticale actuelles du calque, et s'il a atteint la cible.
Par exemple, la fonction suivante affiche la valeur de la propriété MM_UPDOWN (la position verticale courante du calque) dans un champ de formulaire appelé curPosField. (Les champs de formulaires servent à afficher des informations pouvant être continuellement mises à jour, parce qu'ils sont dynamiques - vous pouvez modifier leur contenu après le chargement de la page - dans Netscape Navigator et Microsoft Internet Explorer.) fonction getPos(containingLayer,nestedLayer){
var layerRef = MM_findObj(layername);
var curVertPos = layerRef.MM_UPDOWN;
document.tracking.curPosField.value = curVertPos;
}
Au lieu d'afficher la valeur des propriétés MM_UPDOWN ou MM_LEFTRIGHT dans un champ de formulaire, vous pouvez écrire une fonction qui affiche un message dans ce champ selon la distance qui reste à parcourir jusqu'à la cible, ou appeler une autre fonction pour afficher ou masquer un calque selon la valeur de cette distance. L'utilisation de la valeur de MM_UPDOWN ou MM_LEFTRIGHT n'est limitée que par votre imagination... et vos compétences en JavaScript.
Il est particulièrement utile de tester la propriété MM_SNAPPED lorsque vous disposez sur une page de plusieurs calques qui doivent tous atteindre leur cible pour que l'utilisateur puisse passer à la page ou à la tâche suivante. Par exemple, vous pouvez écrire une fonction qui compte le nombre de calques ayant la valeur MM_SNAPPED à TRUE, et l'appeler à chaque fois qu'un calque est déposé. Lorsque le nombre de calques arrivés sur leur cible atteint le nombre désiré, vous pouvez envoyer l'utilisateur à la page suivante ou afficher un message de félicitations.
Si vous avez associé l'action Déplacement de calque à des liens placés au sein de plusieurs calques à l'aide de l'événement onMouseOver, vous devrez modifier légèrement la fonction MM_dragLayer() pour éviter que la propriété MM_SNAPPED d'un calque aligné repasse à FALSE lorsqu'il est survolé par la souris. (Cela peut se produire si vous avez utilisé l'action Déplacement de calque pour créer un puzzle de photos, car la souris survolera probablement des pièces déjà alignées lors du positionnement des autres) La fonction MM_dragLayer() n'interdit pas ce comportement, car il est parfois souhaitable (par exemple si vous désirez établir plusieurs cibles pour un seul calque).


Pour éviter le ré-enregistrement de calques alignés

1- Choisissez Edition > Rechercher.

2- Sélectionnez Source HTML dans le menu déroulant Rechercher.

3- Tapez (!curDrag) dans le champ texte adjacent.

4- Cliquez sur Rechercher suivant.
Cliquez sur Oui si Dreamweaver vous demande si vous voulez continuer la recherche depuis le début du document. Dreamweaver trouve l'instruction :if (!curDrag) return false ;

5- Fermez la boîte de dialogue, puis modifiez l'instruction dans l'inspecteur HTML pour qu'elle affiche :if (!curDrag || curDrag.MM_SNAPPED != null) return false ;
Les deux barres verticales (||) signifient "ou", et curDrag est une variable qui représente le calque qui a été enregistré comme déplaçable. En français, cette instruction signifie "si curDrag n'est pas un objet, ou s'il a déjà la valeur MM_SNAPPED, ce n'est pas la peine d'exécuter le reste de la fonction".

Fermer la fenêtre