問題:為什么director總是報告“where is ......”(找不到鏈接的媒體文件,如mov、wav文件)?
答:很多人以鏈接方式導入的媒體文件(例如quicktime、wav、aiff、avi等文件)在變換了路徑后會出現找不到媒體文件的情況。
解決方法很簡單,那就是使用the ssearchpaths這個系統屬性列表。the searchpaths告訴director到哪里去找媒體文件。通常我們將媒體文件以一種層次結構方式組織在光盤上,例如projector文件放在光盤的根目錄下,聲音文件放在sounds目錄下,視頻文件放在video目錄下。
當director加載媒體文件的時候.,它會首先查看媒體文件最初的連接地址,如果沒有找到該文件,會接著在電影文件的當前目錄下查找該媒體文件,如果還是沒有找到,它就遍歷the searchpaths中的所有路徑。the searchpaths中的每一個項目就是一個路徑。因此解決方法就是在每個director電影文件的movie script中加入句柄:
on startmovie
append the searchpaths, the moviepath&″video″
append the searchpaths, the moviepath&″sounds″
end
the moviepath返回當前電影文件的路徑名,例如果光盤是d盤,電影文件放在光盤根目錄下,那么the moviepath就返回d:/,和“video”結合就成了d:/video,合并后的路徑通過append附加在the searchpaths后,director就知道到什么地方查找該文件了。
問題:我希望director電影文件放在硬盤上(考慮到速度問題),而媒體文件放在光盤上,我該如何做?
答:這種做法在國外是很普遍的,因為director制作的文件通常都非常龐大,放在光盤上運行的確很慢。國內制作的光盤大多數將電影文件放在光盤上,再在光盤的根目錄下放一個autorun.inf,當用戶插入光盤后,就進入director電影文件漫長的加載過程。因此國外的這種做法很值得推薦,但是并不是所有人都喜歡這種做法,因為這種方法需要制作一個安裝程序將director電影文件安裝到用戶的硬盤上,對于用戶來說,這種做法不如使用autorun更直接。
解決方法同樣涉及路徑問題,只是你必須判斷用戶的光驅符號,然后將它和子目錄結合為新路徑,附加到the searchpaths屬性列表(具體實現見附錄)。
問題:如何在director中使用pdf文檔?
答:這個問題的解決方法涉及將來很多類似問題的解決,那就是如何在director中使用activex技術。很奇怪的是這種技術在director中的使用并不多,似乎沒有受到重視。我最近在制作一張光盤中使用了這種技術。實際證明這種技術很有效,當然你得在程序的開頭編寫提示用戶安裝acrobat reader的代碼。
director很多功能需要通過購買第三方的xtra實現,.通常這些xtra都很貴。比如使用pdf xtra。但是避開購買pdf的xtra,通過使用activex,你完全可以將acrobat reader的所有功能集成到director中來,因為免費發放的acrobat reader中包含了一個activex控件。在安裝完畢后這個控件自動注冊(具體實現見附錄)。
問題:如何在director中播放mpeg文件?
答:在director中播放mpeg文件的方法主要有三種:
1.使用mci,這種方法和director的集成不好,不建議采用。
2.使用xtra與director集成,但是需要額外購買。
3.使用activex與director集成,不需要額外購買。
在這里我們介紹第三種方法。
其實這個解決方法和上面讀入pdf的方法相同,在設置和編程上稍有出入。
具體解決方法如下:
在director中引入acrobat reader activex控件。
選擇insert→control→activex。
然后在出現的對話框中選擇“activemoviecontrol object"。
單擊ok按鈕后進入第二個activemovie activex屬性對話框。
滾動屬性標簽中的屬性直到屬性filename名出現。單擊按鈕“..." (新的版本可能不包含按鈕“...",你可以使用lingo),然后單擊"browse"按鈕去選擇要播放的avi或mpg文件。將此控件插入到director中。
將這個剛剛插入的activex控件從角色庫中拖放到舞臺上。
點擊director中的播放按鈕,就可以看到mpeg文件的播放了。
也可以通過lingo編寫程序訪問此控件,例如run是這個控件的一個方法。也可以在一個按鈕中附上下面的代碼:
on mouseup
run (sprite 1)
--假設控件所在通道為1
end
注:activex視頻對象總是直接寫屏的,它的direct to stage總是設置的,這使得它超越director通道的安排次序,總是在最上面。
問題:什么是shockwave,什么是tech.sina.com.cn/introduction/focus/flash.html target=_blank>flash,為什么shockwave比flash提供更高的幀速率?
答:shockwave和flash是macromedia提供的兩種網上流媒體播放技術。flash是一種網上矢量動畫技術并帶有一定的交互編程功能。shockwave是一種更加復雜的播放技術,由于它提供了強大的、可擴展的腳本引擎,使得它可以制作聊天室、操作html、解析xml2文檔、控制矢量圖形,兩者都是流媒體技術。但是flash啟動非常快,而shockwave啟動沒有flash快。flash是用flash軟件制作,文件后綴名是swf(shockwave flash format),shockwave是用director制作,文件后綴名是dcr。
幀速率決定了媒體可以播放的最高速率,shockwave和flash的實際播放速率通常由于播放所需的計算量過大而達不到指定的播放率。二者的內部引擎不同,shockwave的幀速率通常在30~60之間,而flash的幀速率在7~12之間。shockwave本質上使用一個高性能的點陣復合引擎,而flash實質上是一個實時矢量到點陣的渲染引擎。通常矢量到點陣的渲染要比簡單的將點陣圖像復合更加耗時,這就是為什么shockwave可以比flash提供更高的幀速率。
一句話:flash是一個矢量動畫軟件,而director制作的shockwave更多是基于點陣的動畫。但是很多人并不清楚這些,致使在flash中嵌入大量的位圖,使得文件很大。.也有的人總覺得flash比shockwave慢,卻不明白個中原因。
附錄1在director中使用pdf文檔的具體實現
1.在你的光盤中放入一個很特殊的文件(名字盡量不要和可能出現在任何盤的根目錄下的文件重名),比如你公司的名字(mycorporation.txt)。
2.編寫判斷光盤驅動器的函數:
on checkdrive uniquefile
repeat with i = 67 to 90 --字母a到z的循環
set drive = numtochar( i )
--將a到z的ascii碼轉換為字符
set thispath = string(drive&″:/″&uniquefile)
set myfile = new(xtra″fileio″)
--創建fileio xtra的實例
openfile(myfile, thispath, 1)
--打開指定的文件
if status(myfile) = 0 then
--如果打開文件成功返回0
set myfile = 0 --從內存中刪除該實例的指針并返回drive&″:″
exit
end if
end repeat
set myfile = 0
--從內存中刪除該實例的指針
alert″請插入正確的光盤″
end
3.編寫你的movie script腳本:
on startmovie
mycd = checkdrive(″mycorporaion.txt″)
append the searchpath, mycd&″/video″
append the searchpath, mycd&″/sounds″
end
這樣就可以在光盤上放置媒體文件,把director電影文件放在硬盤上,而不必擔心會出現問題了。
附錄2電影文件放在硬盤上、媒體文件放在光盤的具體實現
1.安裝acrobat reader(為了自動注冊acrobat reader activex控件)。
2.在director中引入acrobat reader activex控件。
選擇insert→control→activex。然后在出現的對話框中選擇“acrobat control for activex"。
單擊ok按鈕后會進入第二個acrobat reader activex屬性對話框。
如果你知道pdf文件的路徑,可以直接在該對話框中指定。所指定的路徑是絕對路徑,在此控件的src屬性中不能指定相對路徑。
單擊ok按鈕后則關閉屬性對話框,這個時候你已經將activex控件插入到cast角色庫中。將這個剛剛插入的activex控件從角色庫中拖放到舞臺上,可以盡量拉伸這個sprite直到你希望的大小。
如果當前的director電影處于播放狀態,你就會看到所指定的pdf出現在舞臺上。
但是這種方法不實用,除非你用硬盤播放你的演示程序。通常我們希望使用相對路徑(相對電影文件所在的目錄下的子目錄中放置pdf文檔)。那么你不必在此控件的src屬性中設置任何參數,可以使用lingo設置該控件的src屬性。具體程序如下:
在mouseup或enterframe等句柄中編寫如下的程序:
on mouseup me
sprite(1).src = the moviepath&″mypdf.pdf″--假設acrobat控件放在1通道中
end
on exitframe me
sprite(1).src = the moviepath&″mypdf.pdf″
end
將如上的句柄放在acrobat控件所在sprite的sprite腳本中即可
新聞熱點
疑難解答