サイトトップ

Director Flash 書籍 業務内容 プロフィール

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.