Macromedia Flash非公式テクニカルノート
PrintJobが複数のフレームをまたいで処理できない
ID: FN0503001 |
Product: Flash |
Platform: All
Version: MX 2004 and above
Macromedia Flash Player 7以降でサポートされるPrintJobクラスは、インスタンス化とその使用を同一フレームで行う必要があります。ひとつのフレームで作成されたPrintJobクラスのインスタンスは、その後のフレームでメソッドを呼出しても反応しません。たとえば、つぎのコードは、単一のフレーム内で実行しなければなりません[*1]。
my_pj = new PrintJob();
my_pj.start()
my_pj.addPage([引数]);
my_pj.send();
|
[訳者注*1]「単一のフレーム内」というのは、単に再生ヘッドが移動しなければよいという意味ではありません。PrintJobクラスで印刷を行う一連のスクリプト中に、再描画の処理を挟むことができません。したがって、一部の処理をMovieClip.onEnterFrameイベントハンドラメソッド内に移すと、印刷は行われません。
my_pj = new PrintJob();
// 以降の処理をMovieClip.onEnterFrameメソッド内に移す
this.onEnterFrame = function() {
my_pj.start(); // ダイアログボックスは表示されない
my_pj.addPage(0);
my_pj.send(); // 印刷されない
delete my_pj;
delete this.onEnterFrame;
};
|
|
追加情報
PrintJobの処理は、1度にひとつしか行うことができません。次回のPrintJobは、その前のPrintJobにつぎのいずれかが発生するまで作成できません。
・前のPrintJobが問題なく処理され、PrintJob.send()メソッドが呼出された。
・PrintJob.start()メソッドが、値としてfalseを返した。
・PrintJob.addPage()メソッドが、値としてfalseを返した。
・PrintJobインスタンスが、delete演算子を使って削除された[*2]。
[訳者注*2] 原文(後掲[出典]参照)は、「PrintJobに対してdeleteメソッドが呼出された」("The delete PrintJob method has been called")としています。しかし、PrintJobクラスには、deleteというメソッドが存在しません。したがって、PrintJobインスタンスの削除を意味するものと解釈しました。
|
出典
「 PrintJob cannot extend over multiple frames」を邦訳。
_____
作成者: 野中文雄
作成日: 2005年3月15日
Copyright ©
2001-2006 Fumio Nonaka. All rights reserved.
|