- Home
- Categorie
- Digital Marketing
- Grafica, Visual Design & UX
- Stampa in flash "piccola"
-
Stampa in flash "piccola"
Ciao a tutti,
ho un problema con una stampa in flash (innanzitutto premetto che è quasi due anni che non opero più con actionscript).
Ho creato una gmap in flash con il componente afcomponent.
Una volta caricata la mia bella cartina vorrei dar la possibilità di stamparla.
Per stampare stampa, ma lo fa in dimensioni minuscole.
Ho utilizzato print e printasbitmap ma nulla da fare, il risultato è sempre quello, mentre non ci capisco una mazza di come si usa il printjob.
Qualcuno può aiutarmi?
thank's
-
ciao criss. Non sono mai stato dilettante con le stampe in flash, ma a naso, per risolvere la questione, userei actionscript e le bitmapData (flash 8). Quindi attraverso questa classe, potresti fare uno "snapshot" dell'area da stampare, inserendo tale snapshot in un Movieclip creato dinamicamente, che potrai nascondere fuori dallo stage e a sua volta stampare.
Questo codice tutorials potrà aiutarti
/** Screenshot and jpg output **/ import flash.display.BitmapData; import flash.geom.Matrix; //Buttons handlers. Should add an extra function because delegate doesn't allow to pass parameters shaF.onPress = mx.utils.Delegate.create(this,makeShadow); //Helper functions to pass parameters function makeShadow() { capture(0) } /* create a function that takes a snapshot of the Video object whenever it is called and shows in different clips */ function capture(nr){ this["snapshot"+nr] = new BitmapData(output_vid._width,output_vid._height); //the bitmap object with no transformations applied this["snapshot"+nr].draw(output_vid,new Matrix()); var t:MovieClip = createEmptyMovieClip("bitmap_mc"+nr,nr); //positions clip in correct place //t._x = 350; t._y = 10+(nr*130); t._xscale = t._yscale = 50 //display the specified bitmap object inside the movie clip t.attachBitmap(this["snapshot"+nr],1); output(nr); //attachMovie("print_but", "bot"+nr, 100+nr, {_x:t._x+t._width+50, _y:t._y+t._height/2}) } //Create a new bitmapdata, resize it 50 %, pass image data to a server script // using a LoadVars object (large packet) function output(nr){ //Here we will copy pixels data var pixels:Array = new Array() //Create a new BitmapData var snap = new BitmapData(this["snapshot"+nr].width, this["snapshot"+nr].height); //Matrix to scale the new image myMatrix = new Matrix(); myMatrix.scale(1, 1) //Copy image snap.draw(this["snapshot"+nr], myMatrix); var w:Number = snap.width, tmp var h:Number = snap.height //Build pixels array for(var a=0; a<=w; a++){ for(var b=0; b<=h; b++){ tmp = snap.getPixel32(a, b).toString(16) pixels.push(tmp.substr(1)) } } //Create the LoadVars object and pass data to PHP script var output:LoadVars = new LoadVars() output.img = pixels.toString() output.height = h output.width = w //The page (and this movie itself) should be in a server to work output.send("show.php", "output", "POST") } stop()
fonte codice:
http://www.actionscript.it/forum/showpost.php?p=70653&postcount=5naturalmente l'output in questo caso viene spedito pixel x pixel a uno script PHP. a te basterà azionare un print del movieclip creato bitmap_mc.
L'istanza per cui creerà il snapshot , si chiama nel codice output_vid quindi intuitivamente, la tua mappa dovrà chiamarsi output_vid o altro nome definito o sostituito nel codice
Fammi sapere cosa ne pensi.
-
Ciao Edo,
ho risolto diversamente grazie...se a qualcuno dovesse interessare:
var stampa:PrintJob = new PrintJob(); var x:Number = map._xscale; var y:Number = map._yscale; map._xscale = 70; map._yscale = 70; stampa.start(); stampa.addPage("map",{xMin:0, xMax:800, yMin:0, yMax:550},{printAsBitmap:true}); map._xscale = x; map._yscale = y; stampa.send();
Ho ridimensionato al 70% l'effettiva dimensione della mappa, l'ho stampata 800x550 come bitmap e l'ho poi riadattata alle dimensioni originali.
..era più facile di quanto pensassi..il problema sono i nuovi help di flash..poco chiari e senza esempi..
ciao a tutti
-
utile segnalazione. Non avevo mai usato prima printjob.:) A quanto pare è molto pratico e sbrigativo.