J'ai eu le même problème aujourd'hui. Je suis choqué (choqué!) Qu'Adobe ne vous laisse pas faire une chose aussi simple que d'imprimer la scène. J'ai choisi de créer simplement une image bitmap à partir de l'instance de scène, de l'ajouter à l'instance de l'application, puis de l'imprimer. Je pense que cela est plus simple que d'essayer d'emballer les choses dans un autre composant, de modifier la mise en page, etc. Comme vous n'avez qu'une seule image pour tout l'écran, vous n'avez besoin que de positionner cette image. Si vous utilisez une disposition absolue, aucun positionnement ne devrait même être nécessaire. Cela chevauchera parfaitement votre contenu réel. Imprime l'instance d'application. Supprimez l'instance de conteneur de l'image bitmap et vous avez terminé. Maintenant, il pourrait être possible d'utiliser PrintJob et au lieu de FlexPrintJob pour imprimer la scène avec moins de lignes de code, mais je ne crois pas que l'instance de scène soit un Sprite, donc quelque chose comme ce qui suit est nécessaire.
Cette méthode suppose que "this" est l'application.
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();
}
Il y a une seule limite que je peux penser à cette approche. C'est la contrainte de taille d'image bitmap maximale du flash. Mais pour un moniteur HD, je pense qu'il n'y a pas de problème.
Personnellement, je ne suis pas très friand de cette solution. Voir mon alternative ci-dessous. – jpwrunyan