Ich hatte das gleiche Problem heute. Ich bin schockiert (schockiert!), Dass Adobe es nicht so einfach macht, die Bühne zu drucken. Ich habe mich dafür entschieden, ein Bitmap-Bild einfach aus der Bühneninstanz zu erstellen, es zur Anwendungsinstanz hinzuzufügen und dann zu drucken. Ich denke, das ist einfacher, als zu versuchen, Dinge in eine andere Komponente zu verpacken, mit dem Layout zu verwirren, usw. Da Sie nur ein Bild für den gesamten Bildschirm haben, müssen Sie sich nur mit der Positionierung dieses einen Bildes beschäftigen. Wenn Sie das absolute Layout verwenden, sollte keine Positionierung erforderlich sein. Es wird nur perfekt Ihre tatsächlichen Inhalte überlappen. Drucken Sie die Anwendungsinstanz. Entfernen Sie die Container-Instanz der Bitmap und Sie sind fertig.
Nun könnte es möglich sein, PrintJob anstelle von FlexPrintJob zu verwenden, um die Bühne mit weniger Codezeilen zu drucken, aber ich glaube nicht, dass die Bühneninstanz ein Sprite ist, also egal, so etwas wie das Folgende ist notwendig.
Diese Methode setzt voraus, dass "dies" die Anwendung ist.
private function printScreen():void {
var printJob:FlexPrintJob = new FlexPrintJob();
if (printJob.start()) {
var bitmapData:BitmapData = new BitmapData(stage.width, stage.height, false);
bitmapData.draw(stage);
var bitmap:FlexBitmap = new FlexBitmap(bitmapData);
//Wrap the bitmap into a class that can be added to the framework display list.
//I chose mx:Image arbitrarily.
//Really, anything will do as long as it is an IVisualElement
//Note that the application's layout is absolute so this image gets
//temporarily added on top of the actual application's elements.
var image:Image = new Image();
image.source = bitmap;
addElement(image);
printJob.addObject(this);
removeElement(image);
}
// Send the job to the printer.
printJob.send();
}
Es gibt nur eine Einschränkung, die ich an diesen Ansatz denken kann. Das ist die maximale Bitmap-Bildgrößenbeschränkung von Flash. Aber für bis zu einem HD-Monitor denke ich, dass es kein Problem gibt.
Persönlich bin ich nicht sehr scharf auf diese Lösung. Siehe meine Alternative unten. – jpwrunyan