讓"Flash" 寫文件(AS3)

目前,出於安全考慮Flash不支持寫文件的操作,在AS3的API中找不到相應的方法。但是我們可以去看看其它的編程語言的文檔,比如VB,VC++,Java。它們都支持對文件的操作。因此,我們的策略就是讓Flash去調用一個執行寫文件操作的應用程序來實現我們的計劃。這裏有兩個知識點:

1、fscommand("exec", "Write_File.exe") 這句話的意思就是讓 Flash 去調用一個名爲Write_File.exe 的應用程序,這裏有兩點要非常注意:第一,被調用的程序必須在fscommand子文件夾中,並且調用時不能傳遞參數;第二,Flash 影片必需發佈爲一個 .exe 的可執行文件,即讓一個可執行文件調用另一個可執行文件。 
2、System.setClipboard(string:String) 調用這句話時,可以根據給定的 String 參數來設置剪貼板。下面就開始製作吧,今天我們的 ActionScript 尤其簡單喲!

步驟1:在舞臺中放入一個輸入文本框:實例名"input_txt";一個按鈕:實例名"Submit_btn";

步驟2:在第一幀中加入 ActionScript;
// 提示用戶在此輸入要寫入的信息
input_txt.text = "在此寫入一些內容,點擊按鈕後提交!";

// 點擊按鈕後執行 onClick 函數
Submit_btn.addEventListener(MouseEvent.CLICK, onClick);
function onClick(evt:MouseEvent):void {
 // 將文本內容寫入到剪貼板(Clipboard)中
 System.setClipboard(String(input_txt.text));
 // 執行用於寫文件的應用程序(這裏不用寫 fscommand 路徑名,程序默認到這裏取)
 fscommand("exec", "Write_File.exe");
}

步驟3:在菜單中選擇“文件”->“發佈設置”,勾選"Windows 放映文件(.exe)",點擊"發佈";

步驟4:在當前目錄下,創建命爲 fscommand 的子目錄(必需);

步驟5:萬事具備,只欠東風!只要在 fscommand 子目錄下再加入 Write_File.exe 就搞定了。您可以使用任何喜歡的語言去編寫,如 VB, VC 甚至可以是 Java(用包裝軟件將 jar 包裝成 exe,但不推薦這樣使用,因爲可能需要客戶端去下載 jvm)。這裏我使用 VC++ 製作一個 MFC 來生成Write_File.exe。整體思想很簡單:讀取剪貼板內容,創建文件,將讀入的字符串寫入文件。最終會在應用程序的同一目錄下生成Save_Text.txt 文件,其內容就是我們在 Flash 的文本框中輸入的。以下是 VC++ 代碼摘要:
// 導入 fstream 庫文件
#include "fstream.h"

// TODO: Add extra initialization here
// 在窗口的初始化中加入
//***************************************************************************
 // 獲得存儲路徑
 CString strPath;
 GetCurrentDirectory(MAX_PATH,strPath.GetBuffer(MAX_PATH));
 strPath.ReleaseBuffer();
 CString fullPath = strPath + '\\' + "Save_Text.txt";

 // 讀取剪貼板
 char * buffer = NULL;
 CString fromClipboard;
 if (OpenClipboard()) {
    HANDLE hData = GetClipboardData(CF_TEXT);
    char * buffer = (char*)GlobalLock(hData);
    fromClipboard = buffer;
    GlobalUnlock(hData);
    CloseClipboard();
 }

 // 寫文件
 ofstream outfile;
 outfile.open(fullPath);
 if (outfile.is_open()) {
    outfile << fromClipboard << endl;
    outfile.close();
 }
//**************************************************************************

步驟6:如果您不想使用其它語言編寫也沒關係,您可以直接使用下面我已經寫好的這個 exe 文件(其中附有 Flash 源文件):http://www.fs2you.com/files/7bf1fb75-4fcb-11dd-aa18-0014221b798a/

結語:
好了,完成!我們實際上就是在使用剪貼板作爲中間媒介來傳送消息,這也是一種進程間通信的方式,因爲所有進程都共享着同一個剪貼板。大家如果感興趣可以把他製作成一個日記本的程序—— 每次生成文件的文件名都以系統日期和時間命名。本次教程中,沒有太多實質的內容,甚至我們的主角都不是 Flash,但是它可以給我們一些啓發。如果某些任務 Flash 無法完成,是否能讓其它人來助我們一臂之力呢?一個好漢三個幫...



發佈了29 篇原創文章 · 獲贊 11 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章