8

Ejemplo Mover Ventana (forma personalizada) II

En la entrada  Ejemplo Mover Ventana (forma personalizada) vimos como mover la ventana sin tener la barra de títulos nativa de windows. Lo hacíamos con el plugin tmDragDropObj, que lamentablemente no tiene efecto en Vista ni en 7 (Seven).

Ahora que utilizo Windows 7 y gracias a que Jomego preguntó si existe una solución, me puse a buscar una… Primero trate de recordar que plugin puede detectar los eventos del mouse (btdown , btup) y vi un par, pero ninguno funciona en W7, probablemente tampoco en Vista.

Luego de pensar… La lámpara se prendió 💡 . Como utilizo mucho Flash para otros trabajos, recordé que efectivamente Flash puede capturar eventos del mouse cuando interactua con un MovieClip (MC).


Plugins utilizados:

  • NeoDouble (DEC)

El archivo de Flash tiene que tener un MC de la forma que necesitemos y en las acciones del primer fotograma el siguiente codigo:

bt.useHandCursor = false; //Para mostrar el cursor normal y no la mano
bt.onPress = function(){ //Cuando se presione BTDOWN
{fscommand ("NeoBook", "npEjecutarAccion \"[acc_b]\"");}
};

bt.onRelease = function(){ //Cuando se suelte BTUP
{fscommand ("NeoBook", "npEjecutarAccion \"[acc_a]\"");}
};

Noten que bt es la instancia del MC.

Luego lo publicamos y obtenemos el swf que tenemos que cargar en el objeto Flash en nuestra publicación.

Es el único cambio que debemos hacer para que funcione, si no entiendes puedes ver ejemplo nombrado al comienzo . No olvides de revisar el ejemplo incluido en el archivo para descargar. Se incluye el archivo .swf y .fla (CS3 y CS4).

Espero que sirva.

Captura:

ejemplo_mover_ventanaII

Descarga del ejemplo:

  ejemplo_mover_ventanaII.rar (1,4 MiB, 942 hits)

NOTA: Si utilizamos este metodo, necesitamos que la pc tenga instalado adobe flash player. Si no estamos seguros podremos embeberlo en la aplicación con un incremento del tamaño final del archivo.

Descarga el ejemplo actualizado (sugerencias por Mongoose).


8 Comments

  1. Muy buenas Bunkker, por fin he podido probar lo de la ventana movible y a funcionado perfectamente, es algo lioso el tener que utilizar un objeto flash, pero bueno para la proxima vez todo lo aprendido en esta sera más facil implementarlo… muchas gracias por la solución y te deseo que pases una feliz navidad y un prospero Neobook 2010.

  2. Que hay bunker.
    muy bueno tu ejemplo(como siempre)
    pero me gustaria agregar algo que creo que para la gente que use este metodo le podria ocacionar error, y es que cuando sueltas el click no estando encima del boton,
    la veriable que recive neobook mediante el fscommand seguiria ciendo “BTDOWN”
    ya que creo que aqui falta un evento de flash llamado “onReleaseOutSide”
    que haria eso, decirle a neobook que el boton a sido soltado fuera del area de boton y asi detener el “Drag”, espero ser claro y haber ayudado a alguien.
    saludos.

  3. Hola Mongoose, gracias por tu aporte….una pregunta en que momento se daría esta situación? ya que el mouse mientras sea presionado estará donde se hizo el click y la ventana se moverá con el.

  4. hola Bunker.
    bueno, por ejemplo, en este caso que lo usamos para arrastrar la ventana,
    supon que la arrastras, y en medio arrastre sueltas el mouse, tienes razon en lo que dices
    como podria ser si se supone que la ventana se mueve junto con el mouse?, pero en realidad va retrasado el moviemiento, ya que si lo usamos con un “timer”, digamos que el “timer” de neobook no es muy rapido, incluso depende de tu procesador, no todos tiene super maquinas, el punto es que el error existe, por que te digo esto, por que yo lo use en mi antigua computadora, y a pesar de que tenia un procesador 1.3 ghz, que es algo desente
    pasaba el error, me di cuenta cual era y era lo que ya te avia mensionado y lo solucione.
    prueva lo que te digo.intenta mover el mouse rapido y no es necesario mucho , y luego suelta el click mientras lo mueves. entonces el evento que detectara la animacion flash sera el de ReleaseOutSide, entonces no le mandara ningun mensaje a neobook ya que no esta esa funcion asignada a ese evento. por lo que la veriable del evento en ejecucion quedara en “BTDOWN”. en cambio si le assignas el evento releaseOutSide ya cambiara la variable del evento a eso “BTUPOUTSIDE” por llamarlo de una forma, el punto es que cambia y para el arrastre..eso es todo. en fin creo que no se resumir… :roll:

  5. Woww… its work on Windows 7!
    Thank you for the code and plugins…
    Thank you all… :mrgreen:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *