2009-11-13 5 views
0

J'utilise Actionscript 3 et je suis en train de créer une visionneuse d'images. Jusqu'à présent, j'ai la fonctionnalité suivante, basée sur l'événement de souris "onClick":Actionscript 3 - détection cliquez pour agrandir ou faire glisser

1) Lors de la visualisation de l'image de taille normale, un clic affichera une image "zoomée".
2) Lors de la visualisation de l'image agrandie, un clic affichera l'image "normale".

Très bonnes choses.

Maintenant, je veux appliquer le comportement suivant, l'utilisateur peut zoomer et faire glisser l'image zoomée autour - et tracent les éléments suivants:

1) Suppression de l'événement onClick
2) Ajouter un événement "onMouseDown", pour enregistrer la souris XY sur la souris
3) Ajouter un événement "onMouseUp", et enregistrer la souris XY sur la souris
4) Si le XY onMouseDown = XY onMouseUp suppose alors un événement Click - donc Zoom
5) Si le XY onMouseDown! = XY onMouseUp suppose alors un événement Drag - faites donc glisser l'image

Maintenant, cela ne fonctionne que si l'utilisateur a une main ferme en cliquant - et ne se sent pas comme une bonne solution. Si l'utilisateur a une main instable, un événement de traînée est supposé quand il veut vraiment dé-zoomer ...

Quelqu'un peut-il suggérer un meilleur moyen de détecter si vous voulez faire glisser l'image ou de zoomer l'image que j'ai dessiné? au-dessus?

Merci pour vos pensées/aide,

coco principale.

Répondre

3

pseudocode de base suit:

import flash.utils.getTimer; 

private var clickTime:uint; 

function onMouseDown(event:Event):void { 
    this.clickTime = getTimer(); 

    // Start drag even if they intend to zoom -- it won't hurt if it shifts a 
    // couple pixels before zooming out 
    startDrag(); 
} 

function onMouseUp(event:Event):void { 
    var delta = getTimer() - this.clickTime; 

    // It's been less than a quarter second, so user probably meant to zoom 
    // in/out. Adjust this number to taste if it seems too low or high. 
    if (delta < 250) 
     toggleZoom(); 

    stopDrag(); 
} 
+0

fracassant - merci Cory –