今日は同じ問題を持っていたと思います。私はショックを受けました(ショックを受けました)、アドビはあなたにステージを印刷するという簡単なことをさせません。ステージインスタンスからビットマップイメージを簡単に作成し、それをアプリケーションインスタンスに追加してから印刷しました。私は、これは、他のコンポーネントやレイアウトなどでラップしようとするよりも簡単だと思います。画面全体に対して1つのイメージしかないので、この1つのイメージを配置するだけで構いません。アブソリュートレイアウトを使用している場合は、配置する必要はありません。実際の内容と完全に重複しています。アプリケーションインスタンスを印刷します。ビットマップのコンテナインスタンスを削除すると、完了です。
ここで、コードの行数を減らして印刷するのに、FlexPrintJobの代わりにPrintJobを使用することは可能かもしれませんが、ステージインスタンスがスプライトであるとは思わないので、次のようなものが必要です。
このメソッドは、 "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();
}
このアプローチには1つの制限があります。これは、フラッシュの最大ビットマップイメージサイズの制約です。しかし、HDモニターまで、私は問題はないと思う。
個人的には、私はこの解決策に熱心ではありません。以下の私の選択肢を見てください。 – jpwrunyan