domingo, mayo 21, 2006

Cargando Pageflip... una y otra vez.

Llevo algunos días trabajando de lleno en una multimedia... quería hacer algo vistoso que no me tomara mucho tiempo desarrollar en vista de que no soy un "coder" sino un simple diseñador con muy poco tiempo para hacer lo que verdaderamente le gusta (ni siquiera puedo escribir en este blog) Revisando algunos trabajos de "otros" descargados de Internet me encontré con una idea original... aunque no explicaban como hacerlo utilicé Google y me encontré con este Flash Open Source desarrollado por un hungaro brillante llamado Macc.

Te sugiero que vayas al sitio para que veas este hermoso Flash que funciona como un libro al que puedes pasar las páginas con el mouse como si fuera un libro real.... Puedes ir tambien al Weblog de Criterion donde han hecho muy buenos tutoriales en español de como personalizar este script, incluso desde allí podrás encontrar el link de una version que permite cargar el contenido dinámico usando un xml.

Todo me funcionó muy bien hasta que me dí cuenta que despues de cargar en mi Flash central a pageflip por segunda vez el libro se rehusaba a pasar las páginas, se quedaba como atascado y de ahí no salía. Me puse a buscar más información en la red y constaté que no era solo yo el del problema... muchos lo tenían y no sabían como solucionarlo. Las soluciones propuestas por los más avispados no funcionaban en todos los caso.

El fichero original de Pageflip contiene una funcion llamada removeML a la cual, según explica el autor, debemos llamar si queremos cargar de nuevo a pageflip dentro de nuestro Flash. Esta función desactiva el mouse listener del script... sin embargo por más que la "llamé" de todas las maneras posibles el asunto no me funcionó.

En fin seguí googleando y llegué al weblog de Quasimodo y leyendo entre los comentarios encuentro este hecho por Joel Caballero:

My friend next to me answered the question I've seen 100 times here. In order to use removeML() you have to move the function from frame8 to frame 9. It didn't specify that in the code. Then after; if you've loaded pageflip into a movieclip titled "your_mc", you can call it by your_mc.removeML();

Don't thank me, thank my friend.

Efectivamente, la función estaba definida por Macc, el programador original, en el frame 8 y debía estar en el 9. En cuanto la cambié de lugar y la llamé nuevamente todo me funcionó de maravillas.

Agradezco mucho al amigo de Joel y a Joel por compartir su inteligente observación. Ahora yo la comparto con ustedes y si se les presenta el mismo problema ya sabrán que hacer...

(Y se librarán de la migraña que tengo yo)

23 comentarios:

  1. Anónimo9:42 p. m.

    Estoy intentando aplicar tu solución al problema de cargar Pageflip una y otra vez pero no he tenido éxito. Sería mucho pedir que me eniviaras los ficheros .fla? Muchísimas gracias.
    L.Rius
    lrius1@xtec.net

    ResponderEliminar
  2. El archivo original .fla del proyecto es un poco pesado ya que es un proyecto grande. Pero te hago un ejemplo en Flash y te lo mando mañana en la mañana... Saludos y gracias por pasar por nuestro blog.

    ResponderEliminar
  3. Aqui: http://rapidshare.com/files/2219204/pageflip.zip
    hay dos .fla, uno es el pageflip original con la funcion removeML() donde tiene que ir y el otro es solo un ejemplo de como pasar la funcion desde un boton y descargar (unload) y cargar (load) la pelicula nuevamente en el proyecto. Espeo que te sirva de alguna ayuda. Saludos

    ResponderEliminar
  4. Anónimo10:32 a. m.

    ahora esta el pageflip version 3 la diferencia con el resto es que tiene zoom las paginas se cargan externa y progresivamente y hasta tiene para imprimir las paginas y muchas cosas mas, pero no se puede descargar si alguien lo tiene si me puede enviar los archivos en zip o rar o dejar un link aqui para descargarlo mi mail es martinsimondi@hotmail.com

    ResponderEliminar
  5. Anónimo9:56 a. m.

    Saludos.. descargue el .fla de rapidshare ... pero mi flash no lo abre... tengo el mx 2004... alguein sabe poruqe puede ser esto???

    ResponderEliminar
  6. Creo que lo hice en Flash 8, y por eso no te lo abre el mx 2004. Voy a ver si te lo puedo convertir en caso de que no consigas abrirlo.

    ResponderEliminar
  7. Anónimo2:43 a. m.

    Buen trabajo Ariel, voy en busca de la versión 3 (anonimo1).

    Pero de momento.. el archivo import_xml.as podrías pasarmelo Ariel?
    o también me podrías dar un enlace a alguna página donde explique que es, y como se hacen esos xml

    ResponderEliminar
  8. Lo busco y lo pongo para que lo bajes. De todas formas pasate por Criterion que manosearon bastante el pageflip. En su momento me fueron de gran ayuda.

    http://www.criteriondg.info/wordpress/?s=pageflip

    Saludos

    ResponderEliminar
  9. Me has salvado! Gracias.
    Fin a la migraña.

    ResponderEliminar
  10. Me alegra haber contribuido con el fin de tu migraña :) Saludos!

    ResponderEliminar
  11. hola chicos, tengo el mismo problema que el que estais contando, me he metido en criterion y no habla específicamente de este problema, bueno, quiero decir que no lo encuentro,da soluciones a otros, como por ejemplo animaciones en pags, etc.. no tendréis por ahí el import_xml.as? llevo días buscando soluciones a este problema, me he metido en foros y tal , la verdad que encuentro a más gente con este problema, pero no a tanta que lo haya podido solucionar, muchas gracias

    ResponderEliminar
  12. Dejame buscar en los files del proyecto. Que version de pageflip estas usando?? La que use en el momento del post debe estar viejuca :D

    ResponderEliminar
  13. Anónimo1:56 p. m.

    Hey Ariel! tengo la version 2.13, y por el resto me va genial, muchas gracias por la ayuda, soy diseñadora web y hay cosas de los sripts que se me pasan, voy a seguir mirando a ver si puedo llamar correctamente la funcion del remove.
    Muxas gracias pot todo ;P

    ResponderEliminar
  14. @ali mandame una copia del pageflip que estas usando a mi direccion aisaacv at mac.com

    Si le encuentro el problema te lo reporto enseguida.

    Saludos

    ResponderEliminar
  15. Anónimo4:20 p. m.

    Buenas Ariel ;) perdona ke haya tardado en contestar,es ke estoy formateando el ordenador.. los problemas nunca vienen solos,menos mal que tengo una copia :)jo muchas gracias por todo, mañana desde el curro te mando una copia.
    Muy generoso por tu parte,si tienes web pongo tu link en la mía, muchas gracias por todo Ariel
    ;) besos y abrazos

    ResponderEliminar
  16. Anónimo1:01 p. m.

    Hey Ariel, al final me ha ayudado un programador del curro, yo no conseguía poder llamar a la función removeML() desde otra peli, así k él, cogió y en el mismo frame donde estaba la función añadió una epecie de funcion autoejecutable o algo así, es esta:

    this.onUnload = function () {
    Mouse.removeListener(mousecontroll);
    } con lo del remove listener ese se solucionó, :D
    la dejo akí por si a alguien le pasa lo mismo, y lo puede solucionar con sto.
    Muchas gracias por todo!!!!

    ResponderEliminar
  17. ali, es excelente que hayas solucionado tu problema y que además lo hayas puesto aqui para ayudar a todo el que pase.
    Salu2

    ResponderEliminar
  18. una forma muy sencilla que a nadie se le ocurrio, es cuestion de examinar un poco el codigo. asi que sin mas preambulos 100% efectivo y sin tener muchos conocimientos de programamcion.

    1.corta esta funcion que se encuentra en el fotograma 8 capa 4 de acciones


    function removeML() {
    Mouse.removeListener(mousecontroll);
    }

    2.pegala en el fotograma 9 capa 4 de acciones.

    3. crea un boton (puede ser ir al menu principal , o loadmovie para ir a otra pelicuala etc.... eso queda a tu descicion).

    4.al boton le añaderemos el siguiente script:

    on (release) {
    removeML()---Este es el escript
    loadMovieNum("tumenu.swf", 0);
    }
    5.y listo , lo que hemos echo es que cada vez que vamos al menu superior o recargamos la pelicula se ejecute la funcion removeMl y problema solucionado.......sencillo la funcion ya esta creada solo es ejecutarla !!!

    ResponderEliminar
  19. Anónimo10:57 p. m.

    Hola a todos tengo el deseo de realizar una revista digital ,el asunto es que nose mucho de computacion asi que les agradeceria me puedan guiar que programa seria el adecuado si hubiera en español y free ya que deseo empesar cuando lo domine recuriria a algo mas complejo y completo gracias gerardoj78@hotmail.scom

    ResponderEliminar
  20. Anónimo11:47 a. m.

    hola navegantes he buscado mi problema pero no lo encuenro este es que el libro virtual me responde bien en mi computador (tengo flash 8)pero cuando quiera abrilo en otro computador (flash_player plugin 10) previamente instalado el compu no entiende la pelicula.
    agradeceria que alguien de ustedes me ayudara a resolver este problema .
    mil gracias a ustedes por todos los concejos .

    ResponderEliminar
  21. Anónimo7:09 p. m.

    hola compañeros soy una persona que no sabe nada de estas aplicaciones y necesito hacer una revista digital, alguien me puede ayudar

    ResponderEliminar
  22. Ve a Activeden.net y compra un Flash pre-hecho con pageflip... solo tienes que ponerle las imagenes tu mismo. Las instrucciones son claras y hay muchos.
    http://activeden.net/searches?term=pageflip&type=files

    ResponderEliminar
  23. Tal vez esto ayude a otro perdido como yo:

    Resulta que también ocurría ese detalle de cuando vuelves a llamar el flipbook (por motivos de tiempo tuvimos que usar la versión 2.13) ya no dejaba volver a arrastrar la página (ese efecto de arrastre). No sabía tampoco como llamar el removeML, intenté hacer lo que me indicaban aquí y otros foros, sin éxito.

    A punto de hacer el viejo ritual de la gallina (pura brujería para ver si así se arreglaba todo) un colega sale con una solución que le funcionó:

    Tenemos una escena donde están varios libros y nuestro Movieclip hace un loadMovie(); en un frame de acciones cuando entra a la escena específica del libro.

    Algo así tenemos: Escena "libro 1" / Frame de acciones /
    stop();
    my_mc.loadMovie("libro.swf");

    Para hacer que funcione el removeML(); agregamos un BOTÓN con lo siguiente

    on (release) {
    my_mc.removeML();//PARA EVITAR EL ERROR DE VOLVER A CARGAR EL LIBRO
    my_mc.unloadMovie(1);
    gotoAndPlay("Libros",1);
    }

    Esto hace que cuando estemos en la escena donde desplegamos nuestro movieClip con el flipbook, al momento que hacemos el "release" del botón se activa el removeML(); en nuestro movieClip y nos regresa a la escena de los otros libros, así si volvemos a cargar el mismo libro ya no ocurre el error de mover la página.

    Pero esto no acaba aquí, resulta que estamos cargando varias películas; una principal que llama la que carga distintos swf con otros libros y otras escenas. Esto quiere decir que tenemos algo así:

    SWF PRINCIPAL
    -SWF LIBROS 1
    -- LIBRO 1
    -- LIBRO 2
    -SWF LIBROS 2
    -- LIBRO 1
    -- LIBRO 2

    Si agrego al botón esto:

    on (release) {
    _root.my_mc.removeML();//PARA EVITAR EL ERROR DE VOLVER A CARGAR EL LIBRO
    _root.my_mc.unloadMovie(1);
    gotoAndPlay("Libros",1);
    }

    Solo va a funcionar en -SWF LIBROS 1, es importante quitar el _root. para que funcione directo desde SWF PRINCIPAL.

    Espero haberme dado a entender, ya que viví todo un día de confusión gracias a esto, pero así lo resolvimos, no movimos ningún frame ni nada, así funcionó.

    Saludos!

    ResponderEliminar

Tus comentarios son bienvenidos. ¡Animate! Ten en cuenta que no permitiremos comentarios ofensivos o con contenido racista.