2010-04-21 11 views
1

J'ai un projet pur AS3 (sans Flex) qui utilise Flare pour afficher et interagir avec une visualisation de données. J'ai juste implémenté un comportement de panoramique, donc vous pouvez cliquer et faire glisser la visualisation autour, et maintenant je voudrais donner à l'utilisateur un indicateur visuel que cela est possible, en changeant le curseur de flèche avec une belle icône de main attrayante.Approches pour remplacer le curseur dans un projet AS3/Flare pur?

L'utilisateur peut cliquer et faire glisser à tout moment, sauf lorsque la souris est sur un nœud cliquable (moment auquel le curseur passe à un pointeur - ce comportement est déjà en place).

Alors ...
1) Dois-je créer mon propre bitmap/sprite personnalisé ou y a-t-il une palette de curseurs intégrés que je peux utiliser? (Je n'utilise pas de Flex.)

2) Y a-t-il un moyen de remplacer simplement la flèche par défaut par le curseur de panoramique dans le projet ou dois-je attacher le swapping aux événements de souris sur les objets d'affichage? Puis-je utiliser l'objet stage pour que ce comportement s'applique partout?

3) Comment effectuer l'échange? Est-ce que j'utilise directement l'objet Cursor ou dois-je m'impliquer dans CursorManager?

Tout conseil, pseudo-code, ou des mots de sagesse est grandement appréciée!

Répondre

2

Quelques choses que j'ai apprises (toutes jolies nouvelles, vraiment). Tout d'abord, il existe certaines options de curseur intégrées que vous pouvez définir en affectant Mouse.cursor à l'une des options de MouseCursor.TYPE. L'objet Souris est un singleton disponible à l'échelle de l'application, donc partout où vous le modifiez dans votre code, le changement persiste jusqu'à ce qu'une autre modification soit déclenchée. Pour mon cas simple, je l'ai fait:

//on init, start with the "hand" 
    Mouse.cursor = MouseCursor.HAND; 

    //on clickable items, change to "pointer", then back to "hand" 
    myClickableNode.addEventListener(MouseEvent.ROLL_OVER, function(evt:Event):void { 
     Mouse.cursor = MouseCursor.BUTTON; 
    }); 
    myClickableNode.addEventListener(MouseEvent.ROLL_OUT, function(evt:Event):void { 
    Mouse.cursor = MouseCursor.HAND; 
    }); 

Le résultat est que vous avez toujours la « main » jusqu'à ce que vous capotage quelque chose cliquable, vous obtenez le « pointeur ».

2

Je ne pense pas qu'il y ait un CursorManger en flash, seulement flex. La façon dont je le fais est avec une classe personnalisée qui cache le curseur et fait glisser le curseur personnalisé à mouse_move. Vous devez le définir sur mouseChildren = false, sinon flickr ou les boutons ne seront pas cliquables. Un problème que j'ai trouvé est avec des menus contextuels personnalisés. Essayez ce lien http://abrahamyan.com/2009/03/23/as3-cursormanager/

+0

C'est une classe chouette! J'ai fini par utiliser le curseur intégré pour ce cas, mais cela me plaît beaucoup quand j'ai vraiment besoin d'utiliser des images personnalisées pour les curseurs. Merci! – peteorpeter