Avec flash et AS3, il semble y avoir un problème avec l'événement de déplacement de la souris en mode plein écran et mouseLock
activé que je ne comprends pas comment résoudre.as3: événement mouse_move en mode plein écran et mouseLock sur les mouvements lents de la souris
Quand je rentre en mode plein écran avec Stage.mouseLock
propriété enabled
et je fais des mouvements très lents avec la souris, les deux propriétés pour déterminer l'emplacement de la souris (MouseEvent.movementX
et MouseEvent.movementY
) retour à zéro (0).
Une impression de l'événement event.toString()
retours:
[MouseEvent type="mouseMove" bubbles=true cancelable=false eventPhase=2 localX=0 localY=0 stageX=0 stageY=0 relatedObject=null ctrlKey=false altKey=false shiftKey=false buttonDown=false delta=0]
« La souris peut être déplacé pour autant que je veux toujours retourner 0 pour x et y, si la souris sont déplacés très lent, il est donc impossible de déterminer le mouvement de la souris. " (*) Après un meilleur test j'ai ajouté une correction de cette phrase, ci-dessous dans la "Note". C'est très étrange parce que l'événement est déclenché correctement lorsque la souris est déplacée (aussi avec des mouvements lents), mais le mouvement de retour est 0. On dirait que le mouvement est < 1 mais les mouvements sont seulement des nombres entiers, donc les valeurs sont toujours retourné 0.
J'ai essayé également de changer les paramètres de la souris de OS (Mac OSX) sans succès.
Si vous voulez, je peux vous donner un exemple de code à entrer en mode plein écran et activer les propriétés Stage.mouseLock.
Nous vous remercions de votre suggestion.
Note:
Après avoir testé mieux que j'ai trouvé que flash player (ma version de flash player est 11,7,700,203) a un comportement qui ressemble à un bug: si le mouvement de la souris actuelle (movementX
et movementY
) est égal au mouvement précédent, que le retour flash movementX=0
et movementY=0
. Le prochain mouvement de la souris sera la valeur correcte car elle sera différente de zéro. Pour cette raison, avec un mouvement constant toujours dans la même direction (avec un mouvement très lent est plus facile à reproduire), le joueur montre des "valeurs zéro" tous les deux événements tirés.
At this link vous pouvez tester un exemple de travail (plus rapide que le code vous-même un exemple).
Si le comportement que j'ai trouvé est correct, qu'il est facile de modifier le code pour rectifier ce problème, de toute façon, à mon humble avis, il reste un bug. Je vais le signaler à Adobe.
At this other link (merci à @nemostein) il y a un autre exemple de travail.
J'essaie de mieux m'expliquer: si vous déplacez le curseur très lentement (c'est-à-dire dans la bonne direction), vous recevrez la sortie Movement(X:1 Y:0)
lorsque vous déplacez le curseur suffisamment. Si vous déplacez à nouveau le curseur assez à droite, vous recevrez la sortie Movement(X:0 Y:0)
.Si vous répétez les micro-mouvements, vous allez recevoir le rapport de mouvements toujours avec ce modèle: (x:1,y:0),(x:0,y:0),(x:1,y:0),(x:0,y:0)...
au lieu de (x:1,y:0),(x:1,y:0),(x:1,y:0)...
Je pense qu'il est faux de recevoir un mouvement comme (x:0,y:0)
me semble que ces valeurs sont renvoyées chaque fois que vous faites un mouvement est égal (à la fois le x et le y) à votre mouvement précédent.
J'espère que cela est compréhensible.
Exemple de code est toujours utile, s'il vous plaît envisager de l'inclure. Ces problèmes disparaissent-ils si vous n'êtes pas en plein écran ou si la propriété 'mouseLock' n'est pas activée? –
Ceci est ma première question en stackoverflow, merci pour la suggestion. J'ai vu que le problème est lié uniquement aux propriétés 'motionX' et' motionY' et n'est pas lié à 'mouseLock' défini sur false. J'ai ajouté une note dans ma question qui, je pense, explique correctement le problème et propose une solution. Vous pouvez utiliser [ce lien] (http://inflagrantedelicto.memoryspiral.com/2012/07/as3-quickie-mouse-lock-and-relative-mouse-coordinates/) pour tester ma découverte. – Rancid