asd

14

Mar

Imprimir fotogramas desde Flash 8 usando PrintJob

Publicado por: LeoBaraldi

Este es un tutorial para el amigo Jonathan de México que nos hace llegar la siguiente duda de como imprimir en Flash 8 usando la Clase PrintJob. A esto sumarle la posibilidad de poder imprimir los frames determinados de una película cargada dinámicamente ya sea por LoadMovie o MovieClipLoader y así también como detectar la orientación y controlar la salida de impresión.

Palabras claves usadas: PrintJob - orientation - addPage
Jonathan te recomiendo que en la ayuda de flash leas esas palabras claves asi aprendes un poquito mas.

Actionscript:
  1. //acción del botón
  2. imprimir_btn.onRelease = function() {
  3. //llamamos a la fucion imprimir
  4. imprimir();
  5. };
  6. //la función imprimir llama a cargar Impresora
  7. //lo hago así si es que quieren desencadenar otros eventos cuando llaman a imprimir
  8. function imprimir() {
  9. cargarImpresora();
  10. }
  11. //
  12. function cargarImpresora() {
  13. //cantidad de páginas que vamos a imprimir
  14. var cantPaginas = 4;
  15. //creamos un nuevo objeto para controlar a la impresora
  16. var my_pj:PrintJob = new PrintJob();
  17. //abrimos la ventana donde nos muestra nuestras impresoras instaladas
  18. if (my_pj.start()) {
  19. //aquí que si nuestra impresora esta con la orientación
  20. //del papel horizontal, que haga lo siguiente
  21. if (my_pj.orientation == "landscape") {
  22. //que rote nuestro gráficos
  23. contenedor_mc._rotation = -90;
  24. //que cargue las paginas a la memoria de la impresora
  25. for (var i = 0; i<cantPaginas; i++) {
  26. //AQUI AGREGAMOS LAS PAGINAS A IMPRIMIR
  27. //contenedor_mc nombre de la película a imprimir
  28. //{xMin:0, xMax:599, yMin:0, yMax:900} espacio de impresión
  29. //null no en modo biTmap
  30. //i+1 las paginas que queremos imprimir, como es un for el valor i+1 van a ser: 1,2,3 y 4
  31. //estos últimos son el numero de frame de la película contenedor_mc.
  32. my_pj.addPage("contenedor_mc", {xMin:0, xMax:599, yMin:0, yMax:900}, null, i+1);
  33. }
  34. } else {
  35. //si el papel es vertical hace esto pero sin rotar
  36. contenedor_mc._rotation = 0;
  37. for (var i = 0; i<cantPaginas; i++) {
  38. my_pj.addPage("contenedor_mc", null, null, i+1);
  39. }
  40. }
  41. // imprimimos
  42. my_pj.send();
  43. }
  44. //eliminamos nuestro trabajo de impresión
  45. delete my_pj;
  46. }
  47. //creamos una película que levantara nuestra hojas a imprimir, en el level 20
  48. this.createEmptyMovieClip("contenedor_mc", 20);
  49. //cargamos el swf que tiene nuestras hojas a imprimir
  50. contenedor_mc.loadMovie("imprimible.swf");
  51. //NOTA: COMO PUEDEN VER EN EL EJEMPLO SOLO SE VE EL BOTON, NO SE VEN
  52. //LAS HOJAS  A IMPRIR, LO QUE HICE FUE QUE EN LAS HOJAS A IMPRIMIR, EN
  53. //EST CASO 4 PUSE 5 FRAMES, LOS PRIMEROS CUATROS CON LOS ELEMENTOS A IMPRIMIR
  54. //Y EL ULTIMO SIN NADA, Y AL PRINCIPIO UN GOTOANDSTOP AL ULTIMO FRAME DE LAS
  55. //HOJAS A IMPRIMIR, POR ESO CUANDO CARGA NO MUESTRA NADA, PERO AL IMPRIMIR RECORRE
  56.  
  57. //EN ESTE CASO LOS PRIMEROS 4 FRAMES QUE NECESITO IMPRIMIR.

11

Mar

Cargador en flash de peliculas externas, jpg, gif y png

Publicado por: LeoBaraldi

Muchas veces tenemos un desarrollo que debe cargar muchas fotos externas como una galería de fotos o así también hay sitios en Flash que tienen muchas secciones y a la hora de la carga de los swf externos nos encontramos con el problema de como gestionamos las cargas de los mismos incluido a esto el problema de los cargadores, problemas de rutas y mucho mas.

Para ello flash implementa una clase que se llama MovieClipLoader con un sub conjunto de propiedades como detectores para que sepamos en tiempo real que esta sucesiendo con nuestra carga externa y así controlarla como queramos.

Un uso recomendado es cuando tenemos un sitio que tiene mucha secciones y en vez de hacer todas las secciones en un solo swf las hacemos en diferentes y con solo un contenedor en nuestra película principal las otras secciones se irán cargando a medida que el usuario las solicite y nuestras aplicasiones tendrán menos tiempo de espera en su carga.

Actionscript:
  1. //carpeta donde guardamos nuestros elementos a cargar
  2. var almacen:String = "elementos/";
  3. //ancho de nuestra película en flash
  4. var ancho:Number = Stage.width;
  5. //alto de nuestra película
  6. var alto:Number = Stage.height;
  7. //creamos un contenedor donde se cargaran los files externos
  8. //tambien puedes crear manualmente un pequeño movie clip donde va a ir el contenido le quevantemos
  9. this.createEmptyMovieClip("contenedor_mc", 20);
  10. //aquí creamos una transición para nuestras pelis para cuando se carguen tengan
  11. //un efectito de Fade
  12. //importamos los elementos necesarios para este efecto
  13. import mx.transitions.*;
  14. import mx.transitions.easing.*;
  15. //creamos una función y le pasamos como parámetro que película debe ser afectada por el efecto
  16. function fade(peli) {
  17. TransitionManager.start(peli, {type:Fade, direction:Transition.IN, duration:1, easing:None.easeNone});
  18. }
  19. //creamos una nueva película que será un marco alrededor de la que carguemos
  20. this.createEmptyMovieClip("marco_mc", 10);
  21. //creamos una función para que pinte cada película que carguemos
  22. function pintarMarco(target_mc:MovieClip, largoMarco:Number, altoMarco:Number) {
  23. //el espesor del marco
  24. var anchorMarco:Number = 20;
  25. //el color del marco
  26. var colorBorde = 0x00CCFF;
  27. //la transparencia del marco
  28. var transparenciaBorde = 100;
  29. //y aplicamos los cambios
  30. //uso "with" para no tener que escribir el nombre de instancia de nuevo
  31. with (target_mc) {
  32. beginFill(colorBorde, transparenciaBorde);
  33. moveTo(0, 0);
  34. lineTo(10, 0);
  35. lineTo(10, 10);
  36. lineTo(0, 10);
  37. lineTo(0, 0);
  38. endFill();
  39. _width = largoMarco+anchorMarco;
  40. _height = altoMarco+anchorMarco;
  41. _x = contenedor_mc._x-(anchorMarco/2);
  42. _y = contenedor_mc._y-(anchorMarco/2);
  43. }
  44. }
  45. //creamos un nuevo elemento MovieClipLoader que es el encargado de controlar y cargar nuestras pelis
  46. var mcLoader:MovieClipLoader = new MovieClipLoader();
  47. //creamos un escuchador con el cual sabremos que esta pasando en cada proceso
  48. var escuchar:Object = new Object();
  49. //si se inicia y mientras este cargándose...
  50. escuchar.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
  51. //creamos lo necesario para averiguar el porcentaje de carga
  52. var persoTotal = bytesTotal;
  53. var cargados = bytesLoaded;
  54. var porcentaje = Math.round(cargados*100/persoTotal);
  55. //movemos la barra al porcentaje cargado
  56. barraPorcentaje_mc.gotoAndStop(porcentaje);
  57. //escribimos el porcentaje en modo texto en la barrita de carga
  58. barraPorcentaje_mc.cargado_txt.text = porcentaje+"%";
  59. };
  60. //con esta función podemos asignarle propiedades antes de que se muestre
  61. escuchar.onLoadInit = function(target:MovieClip) {
  62. //posicionamos el elemento que s esta cargando al centro, ustedes colóquenlo donde lo necesiten
  63. target._x = (ancho/2)-(target._width/2);
  64. target._y = (alto/2)-(target._height/2);
  65. //mostramos el marco
  66. marco_mc._visible = true;
  67. //pintamos y acomodamos el marco
  68. pintarMarco(marco_mc, target._width, target._height);
  69. //aplicamos el efecto fade
  70. fade(target);
  71. //como pueden ver "target" es la peli afectada
  72. };
  73. //si la carga comenzó
  74. escuchar.onLoadStart = function(target:MovieClip) {
  75. marco_mc._visible = false;
  76. barraPorcentaje_mc._visible = true;
  77. };
  78. //si la carga finalizo
  79. escuchar.onLoadComplete = function(target:MovieClip, httpStatus:Number) {
  80. barraPorcentaje_mc._visible = false;
  81. };
  82. //
  83. mcLoader.addListener(escuchar);
  84. //ACCIONES SIMPLES BOTONES
  85. cargarJpg_btn.onRelease = function() {
  86. //en este caso llamamos a un jpg y el destino es "contenedor_mc"
  87. //como contenedor_mc tiene un escuchador activara automáticamente todo lo que vimos arriba
  88. mcLoader.loadClip(almacen+"1.jpg", contenedor_mc);
  89. //esto es por si nuestro efecto fade se descontrola
  90. contenedor_mc._alpha = 100;
  91. };
  92. cargarPng_btn.onRelease = function() {
  93. //en este caso llamamos a un png y el destino es "contenedor_mc"
  94. //como contenedor_mc tiene un escuchador activara automáticamente todo lo que vimos arriba
  95. mcLoader.loadClip(almacen+"1.png", contenedor_mc);
  96. //esto es por si nuestro efecto fade se descontrola
  97. contenedor_mc._alpha = 100;
  98. };
  99. cargarSwf_btn.onRelease = function() {
  100. //en este caso llamamos a un swf y el destino es "contenedor_mc"
  101. //como contenedor_mc tiene un escuchador activara automáticamente todo lo que vimos arriba
  102. mcLoader.loadClip(almacen+"1.swf", contenedor_mc);
  103. //esto es por si nuestro efecto fade se descontrola
  104. contenedor_mc._alpha = 100;
  105. };

1

Mar

Cargador para flash para la misma película

Publicado por: LeoBaraldi

Como dice el titulo este es un cargador para nuestro flash pero para aquellas películas que no levantaran otras películas externas ni imagenes externas por ningún metodo como loadMovie, loadMovieNum o lo que sea. Porque? Muy simple, las películas externas no se pueden detectar su peso hasta que no esten cargada por lo tanto nuestro cargador ignorara el peso de las mismas.

framesSimplemente para comenzar creamos un nuevo movieClip con una barra de un ancho de 10px y en la misma línea a los 100 frames insertamos un key frame y a esta línea le ponemos un ancho mas grande como por ejemplo 300px. Nos posicionamos en el primer frame y en la barra de propiedades en "animar" le damos forma. De esta manera podemos ver que nuestra barra va creciendo amedida que recorremos los frames, la idea es que según el porcentaje de carga que tengamos esta barra se mueva.

En otro layer ponemos un bloke de texto dinámico donde enviaremos el porcentaje cargado en formato de texto.Propiedades
Recuerden lo mejor es poner el cargador en una scena y nuestras cosas de la peli en otra, asiq ue en la primera scena en el primer frame ponemos lo siguiente:
 

 

Actionscript:
  1. //cargador para películas que no
  2. //llaman a ninguna otra película externa
  3. //
  4. //detenemos la peli
  5. stop();
  6. //creamos una función que pondrá en marcha nuestro cargador
  7. function cargar() {
  8. //creamos una variable con el peso total de nuestra película
  9. var pesoTotal = _root.getBytesTotal();
  10. //a nuestra película le adjuntamos un evento onEnterFrame
  11. //que por cada ves que el cabezal pase refresque la información
  12. //que necesitamos
  13. cargador_mc.onEnterFrame = function() {
  14. //creamos una variable para saber cuanto se a cargado
  15. var seCargo = _root.getBytesLoaded();
  16. //calculamos el porcentaje y lo redondeamos al resultado
  17. porcentaje = Math.round(seCargo*100/pesoTotal);
  18. //hacemos que nuestra barra que mide 100 frames se mueva
  19. //según el porcentaje calculado arriba
  20. this.gotoAndStop(porcentaje);
  21. //en un campo de texto escribimos el valor del porcentaje
  22. //concatenado con el signo %
  23. this.porcentaje_txt.text = porcentaje+"%";
  24. //condicional simple que si porcentaje es igual a 100
  25. //es porque se cargo completamente nuestra peli
  26. if (porcentaje == 100) {
  27. //eliminamos el onEnterFrame para liberar memoria
  28. delete this.onEnterFrame;
  29. //y nos vamos que muestre nuestra peli
  30. gotoAndPlay("ok");
  31. }
  32. };
  33. }
  34. //ejecutamos la carga
  35. cargar();

Leonardo David Baraldi

Leonardo Baraldi

Nací en Villa Carlos Paz, tengo 33 años y me dedico a desarrollos para la web desde el año 99, preferentemente en las aéreas de ActionScript y CSS. Trabajo para la firma Manifesto Solutions como jefe de producción.

ultimos post

Usa Firefox es mejor che!!!
Copyright © 2008 LeoBaraldi. Todos los derechos reservados.
Designed by LeoBaraldi and powered by Wordpress | RSS Feed
Love WordPress
Manifesto
Manifesto solutions
Sponsort Oficial de LeoBaraldi