ActionScript的PrintJob(列印工作)類別簡介

ActionScript的PrintJob(列印工作)類別簡介
文∕趙英傑

Flash向量動畫高品質的一面可能很難從螢幕上體會,不過,倘若讀者曾經列印Flash網頁的內容,即可明瞭它的優點——Flash能從印表機輸出高品質的向量圖片,因此非常適合線上型錄、折價券、地圖和各種圖表使用。

若是直接使用瀏覽器的「列印」指令來列印包含Flash動畫的網頁,只能列印出Flash動畫的第一格影格畫面。Flash從Player 4.0開始支援print()函數,能讓程式設計人員指令指定要列印的影格和影片片段實體。

這項功能提供了非常大的版面設計彈性,以上一篇文章提供的列印「自製PSP保護膜」為例,用戶在網頁上看到的畫面如下:

列印PSP包膜剪裁

但是列印出來的東西不是上圖的內容,而是隱藏在「工作區」裡的一個影片片段實體(亦即,真正的PSP包膜剪裁圖樣)。

print()函數適用於Flash Player 4.0(含)之後的所有播放器,但Flash Player 7.0(含)新增了功能更強大的PrintJob類別。「自製PSP保護膜」影片就是採用PrintJob類別執行列印,本文將簡介此類別的用法。

PrintJob類別具有三個方法,使用之前,必須先建立此類別的物件實體,如下所示:

var printDoc:PrintJob = new PrintJob();

建立好PrintJob類別實體之後,程式必須依序執行下列三個方法,才能完成列印工作:

  • start():開啟用戶端的「列印」對話方塊,讓用戶選擇並設定印表機。當用戶按下「列印」鈕後,start()方法將傳回true;若按下「取消」鈕,start()將傳回false。
  • addPage():指定要列印的內容。這個方法具有許多參數,但是只有一個是必要的:將被列印的影片片段實體名稱。
  • send():把列印資料傳給印表機,開始列印。

「自製PSP保護膜」影片的程式碼全都放在actions圖層的第一格關鍵影格。列印對象是舞台下方工作區裡的“psp_mc”影片片段,舞台右下角的「列印」按鈕的實體名稱叫做“print_btn”。actions圖層第一格影格的頭兩行程式碼,分別儲存要列印的影片片段實體名稱,以及設定「列印」鈕的事件處理常式,如下:

var doc:MovieClip = psp_mc;
print_btn.onRelease = startPrint;

底下是執行列印功能的自訂函數startPrint():

function startPrint():Void {
  var  printDoc:PrintJob = new PrintJob();
  //  當用戶按下「列印」對話方塊中的「列印」鈕時,
  //  start()方法將傳回true
  if  (printDoc.start()) {
    //  列印對象是doc變數參照的影片片段實體
    printDoc.addPage(doc);
    printDoc.send();
  }
  //  列印完畢後,刪除PrintJob物件
  delete  printDoc;
}

讀者可按此連結下載本文的Flash原始檔(請使用Flash 8軟體開啟)。

Posts created 483

10 thoughts on “ActionScript的PrintJob(列印工作)類別簡介

  1. 看了您的文章, 覺得對於 Flash 的列印有了更進一步的認識。不過仍然還有一些問題想要了解。
    如果我的 Flash 是 300 * 200, 在設定列印 addPage 時, 大小是否會受 300 * 200 限制? 還是如果我那塊是 800 * 1200 也可以全部印出來?
    謝謝!!

  2. 請問要如何讓 「列印」對話方塊 不見 , 我找了很多資料 , 可是好像沒有人有跟我一樣的問題 .

  3. 你是指:按下列印鈕之後,直接從用戶預設的印表機列印出文件嗎?如果是這樣,好像不太合乎常理。

  4. 你好, 看過以上範例之後, 有此概念, 如果我想將影片在場景見到的, 當按print 時, 能夠將隱藏的影片片斷結合一起印出, 能否做到呢, 意思是
    在主場景見到的影片, 是看不到有一個浮水印logo的, 當列印時便將那浮水印加上影片畫面一齊印出, 這是希望在看動畫時沒有浮水印影響畫面美觀, 但印出時便有個類似 copyright 的效果在紙上, 如何寫 as 語法呢, 可以給我例子嗎, 謝謝!

  5. 不好意思,想請問一下
    我將AI的圖貼到flash製成影片片段
    但印出來背景都會是黑色,設定過白色背景也沒有用
    不知道有沒有方法解決?? 😀

    1. 你的圖片有使用特殊的濾鏡或遮片色等效果嗎?建議先在Flash裡面使用其他圖片替代,看看是否能正常輸出。

      good luck!
      jeffrey

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top