2009-01-09 20 views
5

Trabajo en una aplicación Flex que carga recursos Flash externos creados en CS3. Acabo de leer cómo puedo usar la clase Flex mx.managers.CursorManager para cambiar el cursor del mouse de forma explícita. Pero lo que idealmente me gustaría hacer es establecer una propiedad del cursor del mouse en algunos elementos en el Flash SWF cargado, de modo que cuando el cursor pasa sobre este elemento, el cursor cambia automáticamente sin que tenga que responder a los eventos del mouse.Flash/Flex Cursors

¿Es posible? ¿Flash admite esto en DisplayObject o algo así?

Parece que Flash SWF me está anulando. Algunos objetos muestran automáticamente el cursor de mano con el mouse encima, y ​​no veo la manera de desactivarlo en un DisplayObject.

Respuesta

4

Para establecer el cursor "mano", tan pronto como el ratón pasa sobre un elemento que tiene que especificar estas propiedades:

<mx:VBox 
     useHandCursor="true" 
     mouseChildren="false" 
     buttonMode="true"> 

Sin embargo, esto sólo funciona para el cursor de la mano. También tenga en cuenta el atributo mousechildren requerido. Debe establecer esto en falso para lograr el cursor para todos los elementos contenidos o debe especificar los atributos useHandCursor y buttonMode para todos los elementos. Sin embargo, el efecto secundario de configuración mouseChildren a falsa es que todos los eventos de ratón (mouseOver, mouseOut, clic, ...) en los elementos secundarios ya no funcionará.

En caso de que quiera utilizar un cursor diferente que el cursor de la mano Me temo que tiene sólo dos posibilidades:

  • reemplazar el cursor de mano estándar por el cursor
  • Uso del mouseOver y mouseOut eventos para establecer el cursor mediante programación.
2

En cualquier objeto heredado de Sprite cuyas propiedades buttonMode y useHandCursor sean ambas verdaderas, obtendrá un cursor de mano por defecto cuando lo desplace. Algunos objetos hacen esto por defecto, correcto; Button y LinkButton son ejemplos que probablemente hayas notado. Simplemente establecer useHandCursor en false en cualquiera de estos componentes deshabilitará el cursor de mano con la suficiente facilidad, incluso cuando su propiedad buttonMode (que es responsable de despachar los eventos de clic) se establece en verdadero.

Si desea establecer el cursor en cualquier otra cosa en mouseOver, tendrá que responder a los eventos del mouse; no hay forma de evitar eso. Dependiendo de su objetivo de diseño, podría romper ese trabajo de alguna manera, tal vez heredando de algún otro objeto y luego anulando su comportamiento predeterminado, pero de alguna forma u otra, el tiempo de ejecución necesita saber que desea que se manejen esos eventos del mouse.

Cuestiones relacionadas