У меня была такая же проблема сегодня. Я шокирован (шокирован!) Тем, что Adobe не позволит вам сделать такую простую вещь, как печать сцены. Я решил просто создать растровое изображение из экземпляра сцены, добавить его в экземпляр приложения и затем распечатать его. Я думаю, что это проще, чем пытаться обернуть вещи в еще один компонент, связываться с макетом и т. Д. Поскольку у вас есть только одно изображение для всего экрана, вам нужно только потрудиться, чтобы расположить это одно изображение. Если вы используете абсолютный макет, позиционирование даже не требуется. Это будет просто идеально перекрывать ваше реальное содержание. Распечатайте экземпляр приложения. Удалите экземпляр контейнера растрового изображения, и все готово.
Теперь, возможно, можно использовать PrintJob и вместо FlexPrintJob для печати этапа с меньшим количеством строк кода, но я не считаю, что экземпляр этапа является Sprite, поэтому независимо от этого необходимо что-то вроде следующего.
Этот метод предполагает, что «this» является приложением.
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();
}
У этого подхода есть только одно ограничение. Это ограничение максимального размера растрового изображения в Flash. Но для монитора HD, я думаю, нет проблем.