記錄、讀取外部文本在多媒體創作中經常接觸,通常用于記錄使用者資訊、動态更改程式使用文本資料等!這裡我們将簡要總結一下director中對于外部文本的利用。
讀取外部文本
準備工作:
建立兩個純文字檔案"C:/Data.txt"、"C:/Data.cus",内容均為“this is text file!”
方法有三:
1. 使用插件:Fileio.x32
Fileio.x32是director預設附帶的插件,可以實作文本的讀取、寫入。以下函數實作讀取某個純文字檔案。而無關于檔案字尾名:
on AGgetpref theFilename
--建立xtra執行個體
fileOutIn=new(xtra "Fileio")
--檢測是否成功生成xtra執行個體,出錯則傳回資訊-1
if not ObjectP(fileOutIn) then
return -1
end if
--打開外部文本檔案
fileOutIn.openfile(theFilename,1)
--讀去文本資料
FileTxt=fileOutIn.readFile()
--關閉檔案
fileOutIn.closeFile()
--從記憶體中清除xtra執行個體
fileOutIn=void
--如果讀取的結果是空則說明文本不存在、傳回結果-1
if FileTxt=void then
return -1
else
return FileTxt
end if
end
使用範例:
以下指令讀取外部純文字格式檔案C:/Data.Cus,該文本内容是“this is text file!”(你可以先自己建立這個檔案)
put Aggetpref("C:/Data.Cus")
--“this is text file!”
提示:對于檔案字尾名無關的純文字檔案,我們可以僞裝自己程式相配合的“格式”。盡管裡面是純文字,但是我們同樣可以進行相關的特殊處理,以至于一般使用者不能直接利用。
2. 使用演員的filename屬性
假設目前你的電影中已經存在文本演員”word”,那麼以下代碼将檔案C:/Data.txt中的文本讀取到内部,成為演員”word”的文本内容:
member("word").filename="C:/Data.txt"
注意:使用這個方法時候,必須存在操作的對應演員。也就是說他是修改演員外部連接配接目标的途徑來實作的。同時文本讀取以後演員何這個外部檔案就沒有直接關系了。
提示:這個方法隻能使用txt,rtf文本檔案,不能自定義檔案字尾名。假如你讀取“C:/Data.Cus”,演員将不可用。從這個我們也可以知道director對于外部檔案的支援是首先基于檔案字尾名的判斷的。
3. 使用指令:importFileInto
importFileInto 使得director能夠通過lingo指令導入外部元素,包括director支援的一切媒體元素。以下是用本指令擷取外部文本的代碼:
importFileInto member 11, " Data.txt "
提示:這個方法中涉及的目标演員可以存在也可以不存在。對于不存的目标演員,director将自動建立。如果已經存在目标演員,則原先的演員被替換。
寫入外部文本
寫入外部文本通常使用Fileio.x32
以下函數實作生成外部任意字尾名的純文字格式檔案:
on AGsetpref theFilename,stringIn
if not stringP(stringIn) then
return -1
end if
fileOutIn=new(xtra "Fileio")
if not ObjectP(fileOutIn) then
return -1
end if
theFilename=theFilename
fileOutIn.openfile(theFilename,1)
fileOutIn.delete()
fileOutIn.createFile(theFilename)
fileOutIn.openfile(theFilename,1)
fileOutIn.writeString(stringIn)
fileOutIn.closeFile()
fileOutIn=void
return 1
end
範例:以下代碼生成内容為“Welcome to mobiusclub ”的純文字檔案”C:/Welcome.dct”:
AGsetpref("C:/Welcome.dct","asdfasdf")
補充:
getpref 和 setpref 作為director自提供的資訊記錄方式,可應用于包括網絡的資訊讀寫,但是限制就是資料讀取必須定位在主程式同級的Prefs目錄中,格式必須為txt純文字.
提示:
getpref 和 setpref 在shockwave中可以實作等價于ie的cookie功能,用于記錄我們需要在用戶端标記的資訊!