Botón para imprimir un archivo .swf en AS3
2 seguidores
Buenas noches a todos.
Necesito hacer un botón para imprimr un swf. Yo había hecho alguno, pero en AS2, y ahora con un proyecto en AS3, no me sale por mas que doy vueltas.
Imaginoq eu lo primero es importar
import flash.printing.PrintJob;
y luego:
btn_print.addEventListener(MouseEvent.MOUSE_OVER,MOUSE_MOVE_btn_print);
y la función, ¿no? Pero no puedo!!
Si alguien me echa una mano, por favor.
Gracias!
Diego Lorenzo
Hola,
A ver si te sirve esto:
import flash.printing.PrintJob;
btn_print.addEventListener(MouseEvent.MOUSE_CLICK, comenzarImpresion);
function comenzarImpresion(evt:MouseEvent):void {
var objetoPrint:PrintJob = new PrintJob();
var resultado:Boolean = objetoPrint.start();
if (resultado) {
objetoPrint.addPage("movie clip a imprimir");
objetoPrint.send();
delete objetoPrint;
}else{
//EL USUARIO NO TIENE IMPRESORA O ESTÁ APAGADA O DIÓ UN ERROR
}
}
Revísate la documentación de Flash para saber como funciona el addPage:
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/printing/PrintJob.html#addPage%28%29
Como ves es muy sencillo. Si necesitas más ayuda no dudes en preguntar.
Saludos
soylaguadi
Muchas gracias Diego.
Me ha servido de gran ayuda. Al final modifique un poco el código, dejando este:
btn_print.addEventListener(MouseEvent.CLICK, comenzarImpresion);
function comenzarImpresion(evt:MouseEvent):void
{
var myPrintJob:PrintJob = new PrintJob();
var myMovieClip:MovieClip = new MovieClip();
myPrintJob.start();
myPrintJob.addPage(contenido_mc);
myPrintJob.send(); }
Muchas gracias.
Un saludo
Guadalupe
soylaguadi
Perdona Diego...
Es que ahora tengo un problema, porque mi MC es más garnde que una página y se me corta, como cambiar la escala, o poner una anchura a mano.
Gracias!!
Diego Lorenzo
Hola,
Para definir la anchuara a mano, en el addPage, le tienes que poner un rectángulo.
Por ejemplo:
printJob.addPage(contenido_mc,{x,y,ancho,alto});
Revísate el link que te pasé en mi mensaje anterior que hay te viene explicado.
Saludos
soylaguadi
Muchas gracias Diego.
Solo una cosa más... antes he creado un area de impresion (con este codigo: imagino que es similar a lo que me decias):
btn_print.addEventListener(MouseEvent.CLICK, comenzarImpresion);
function comenzarImpresion(evt:MouseEvent):void
{
var myPrintJob:PrintJob = new PrintJob();
var myMovieClip:MovieClip = new MovieClip();
var contentArea:Rectangle = new Rectangle(0,0,850,1100); // Define MI printArea
myPrintJob.start();
myPrintJob.addPage(contenido_mc, contentArea);
myPrintJob.send(); }
Lo que pasa es que a la hora de imprimir necesito que se cambie la escala para que entre en un folio. Mi movie clip es más ancho y se corta, solo me imprime lo que equivale a un A4.
No sé si me explico..
Gracias por la ayuda.
Diego Lorenzo
Si el movieclip es más grande del tamaño de un folio, vas a tener que hacer una copia del movieclip y escalarle el tamaño para que se adapte al folio. Esa copia del moviclip la pones como no visible y luego de imprimir la eliminas para que así el proceso sea invisible para el usuario.
Saludos
soylaguadi
Ufff, vaya lio. Entonces:
1. al hacer click habría que duplicar mi "contenedor_mc", (primer problma, creo que en AS3 no está el duplicateMovieClip)
2 y ponerlo transparente (por ejemplo, con la propiedad: contenedor_mc._alpha = 0)
3. Y que la llamada de print addPage llamase a ese otro mc
¿Es así? Creo que esto ya em sobrepasa...jeje. No sabía que era tan chungo...
Diego Lorenzo
Si, es eso básicamente jajaja. Dos cosas:
1 - Duplicar el movieclip es sencillo, simplemente instancia em movieclip original en la biblioteca y luego por código lo llamas como a otra clase cualquiera con el constructor new
2 - Tienes que ponerlo como visible=false, si le quitas el alpha, no imprimirá nada jajajaja.
Saludos