2011-03-07 3 views
7

J'ai un composant qui étend une liste d'étincelles et lorsque je la défile avec la molette de la souris, il défile trop en une fois. J'ai essayé de rechercher le gestionnaire qui s'occupe du défilement de la molette de la souris dans la classe List et la classe VerticalLayout pour remplacer mais je ne peux pas le trouver.Flex Spark List Vitesse de défilement de la molette de la souris

Y a-t-il un autre moyen de changer cela, ou est-ce qu'il me manque quelque chose?

+0

Si votre problème est seulement avec moi mousewheel: J'ai le même problème et toujours pas de solution :(http://stackoverflow.com/questions/3584127/scrolling-interval-in- a-spark-list-avec-tilelayout-oversized-while-using-mouse-wh – hering

+0

ouais c'est juste le défilement de la molette de la souris, il se déplace environ 3 fois plus que le défilement normal et semble donc incohérent. mx list Je pourrais faire surcharger la fonction protégée mouseWheelHandler() pour changer la vitesse, donc j'ai supposé qu'il y aurait quelque chose de pareil dans la liste des étincelles ... –

Répondre

11

La propriété "delta" de MouseEvent.MOUSE_WHEEL définit le nombre de lignes qui seront défilées par un défilement. Vous pouvez essayer de le changer dans le gestionnaire MOUSE_WHEEL (pendant la phase de capture). Par exemple, le code suivant défile ligne par ligne:

 protected function init(event:FlexEvent):void 
     { 
      list.addEventListener(MouseEvent.MOUSE_WHEEL, list_mouseWheelHandler, true); 
     } 

     protected function list_mouseWheelHandler(event:MouseEvent):void 
     { 
      event.delta = event.delta > 0 ? 1 : -1; 
     } 

+0

J'ai déjà essayé, le gestionnaire est appelé trop tard donc ça n'a aucun effet sur le défilement, mais merci quand même :) Ce que je veux savoir, c'est quelle fonction pour remplacer ce t La liste est en train d'appeler quand elle entend MouseEvent.MOUSE_WHEEL –

+1

Vous avez ajouté un gestionnaire avec la capture définie sur false. Si vous ajoutez un gestionnaire avec capture défini sur true -> il sera appelé plus tôt. Cela résoudra votre problème, et vous n'avez pas besoin de surcharger quoi que ce soit. Comme pour le hadler: cochez VScrollBar-> mouseWheelHandler (mais honnêtement, vous n'avez pas besoin de le surcharger). Encore une fois, essayez de vous abonner à l'événement MOUSE_WHEEL exactement comme dans l'exemple ci-dessus. –

+0

Merci! cela a vraiment résolu le problème, désolé je n'ai pas remarqué hier. le vrai était hors de l'écran donc je pensais que c'était ce que j'ai déjà essayé ... merci beaucoup :) –

0

Les propriétés « horizontalLineScrollSize » et « verticalLineScrollSize » déterminer le nombre de pixels pour faire défiler lorsque l'utilisateur sélectionne les flèches de la barre de défilement. La propriété "verticalLineScrollSize" contrôle également la quantité de défilement lors de l'utilisation de la "molette de la souris". La valeur par défaut est 5 pixels. Les propriétés "horizontalPageScrollSize" et "verticalPageScrollSize" déterminent le nombre de pixels à défiler lorsque l'utilisateur sélectionne la "piste de la barre de défilement". La valeur par défaut est 20 pixels.

Plus de détails: http://livedocs.adobe.com/flex/3/html/help.html?content=containers_intro_4.html

Questions connexes