1:Art Director: 这些人大多数是美术人员,不懂得编程。所以他们使用 director 的方式就是采用时间线作动画的方式,他们的作品可能包含成百上千帧,完全是二维动画的制作方法,可能有一些简单的交互(可以使用 behavior 实现)。
2:Computer Programer: 这些人原先就是某一类程序员,他们精通 c,c 语言,转到 director 编程大多是冲着 director 的 编程语言 LINGO 来的。他们的制作方式就是 使用 Lingo ,你很少在他们的作品中看见很多帧, 通常只有很少几个帧 ,有时候就是单帧。但是他们写的 Lingo 代码可能有 成千上万行。
3:MulTIMedia producer: 就是以上两种人的结合。
国内的情况很特殊,大多数人是属于第一类的。第二类的人很少(因为大多数程序员不喜欢太高级的 script 语言编程)。Director 使用的好坏很大程度上取决于 LINGO 语言的掌握,但是作品制作的好坏却取决于创意和美术制作。所以将来的多媒体创作其实更多需要第三类人。 这就要求美术人员要懂得更多的 Director 技术方面知识。在此根据我解决 director 制作中所碰到的问题的经验,给大家常见的问题作一个解答。
问题1:为什么 director 总是报告“where is ......” (找不到链接的媒体文件,如 mov, wav 文件)
解答:
很多人以连接方式导入的媒体文件(例如 quicktime ,wav,aiff,avi 等文件)在变换了路径后会出现找不到媒体文件的情况。
解决方法很简单,那就是使用 the SearchPaths 这个系统属性列表。
the searchPaths 告诉 Director 到那里去找媒体文件。通常我们将媒体文件以一种层次结构方式组织在光盘上,例如 projector 文件放在光盘的根目录下,而声音文件放在 sounds 目录下,视频文件放在 Video 目录下。
当 director 加载媒体文件的时候,它会首先查看媒体文件最初的连接地址,如果没有找到该文件,它会接着在电影文件的当前目录下查找该媒体文件,如果还是没有找到,它就遍历 the searchPaths 中的所有路径。the searchPaths 中的每一个项目就是一个路径。
因此解决方法就是在每个 director 电影文件的 movIE script 中加入这个 handle
on startMovie
append the searchPaths, the moviePath & "video"
append the searchPaths, the moviePath & "sounds"
end
the moviePath 返回当前电影文件的路径名,例如如果光盘是 D 盘,电影文件放在光盘的根目录下,那么 the moviePath 就返回 D:, the moviePath 和 "video" 结合就成了 D:video,将合并后的路径通过 append 附加在 the searchPaths 后,director 就知道到什么地方查找该文件了。
问题2:我希望 director 电影文件放在硬盘上(考虑到速度问题),而媒体文件放在光盘上,我该如何作?
解答:
这种做法在国外是很普遍的,因为 director 制作的文件通常都非常庞大,打包后的文件 2-3 兆是很普通的事情,但是放在光盘上运行的确很慢。国内制作的光盘大多数将电影文件放在光盘上,再在光盘的根目录下放一个 autorun.inf ,当用户插入光盘后(通常是噩梦的开始),就进入 director 电影文件的漫长的加载过程。因此国外的这种做法很值得推荐,但是并不是所有人都喜欢这种做法,因为它需要制作一个安装程序将director 电影文件安装到用户的硬盘上,对于用户来说,这种做法不如 autorun 直接。
解决方法同样涉及上面的路径问题,只是你必须将判断用户的光驱符号,然后将它和子目录结合为新路径。然后附加到 the searchPaths 属性列表。
具体做法如下:
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
on startMovie
myCD = CheckDrive("mycorporaion.txt")
append the searchPath, myCD & "video"
append the searchPath, myCD & "sounds"
end
这样你就可以将光盘上放置媒体文件,而把 Director 电影文件放在硬盘上,而不必担心会出现问题了。
解答:
这个问题的解决方法涉及将来很多类似问题的解决,那就是如何在 Director 中使用 active X 的技术。很奇怪的是这种技术在 Director 中的使用并不多,似乎没有受到重视。我最近在我制作的一张光盘中使用了这种技术。实际证明这种技术很有效。当然你得在程序的开头编写提示用户安装Acrobat Reader 的代码)
Director 很多功能需要通过购买第三方的 Xtra 实现,通常这些 Xtra 都很贵。比如使用 pdf Xtra.但是避开购买 pdf 的 XTRA ,通过使用 Active X,你完全可以将 Acrobat Reader 的所有功能集成到 director 中来,因为免费发放的 Acrobat Reader 中包含了一个 Active X 控件。在安装完毕后这个控件自动注册。
具体解决方法如下:
1:安装 Acrobat Reader(为了自动注册 Acrobat Reader Active X 控件)。
2:在 Director 中将 Acrobat Reader Active X 控件。
然后在出现的对话框中选择 “Acrobat Control for ActiveX"。
见图一
单击 OK 按钮后会进入第二个 Acrobat Reader Active X 属性对话框(见图 二)
它的第一个属性是 SRC。
如果你知道 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 脚本中。
问题四:如何在 Director 中播放 mpeg 文件?
解答:
在 Director 中播放 mpeg 文件的方法主要有三种:
1:使用 MCI,这种方法和 Director 的集成不好,不建议采用。
2:使用 Xtra,与 Director 集成好,但是需要额外购买。
3:使用 Active X ,与 Director 集成,不需要额外购买。
我在这里介绍的方法是第三种。
其实这个解决方法和上面读入 PDF 的方法相同,在设置和编程上稍有出入。
具体解决方法如下:
1:在 Director 中将 Acrobat Reader Active X 控件。
选择 Insert >Control >ActiveX.
然后在出现的对话框中选择 “ActiveMovieControl Object"。
见图三
#p#副标题#e#
单击 OK 按钮后会进入 第二个 ActiveMovIE Active X 属性对话框(见图四)。
滚动属性标签中的属性直到 属性Filename名出现。单击 ”按钮“...",然后单击"browse" 按钮去选择要播放的 AVI 或 MPG 文件。将此控件插入 Director 中。
将这个刚刚插入的 activex控件从角色库中拖放到舞台上。你可以尽量拉伸这个 sprite 到你希望的大小。
注:新的版本可能不包含 按钮“...",你可以使用 LINGO 此属性
set the filename of member "xxx" to "1.mpg"
点击 Director 中的播放按钮,你就可以看到 Mpeg 文件的播放了。
你也可以通过 LINGO 编写程序访问此控件的方法,例如 RUN 是这个控件的一个方法,
你可以将在一个按钮中附上下面的代码
on mouseUp
run (sprite 1) --假设此控件所在通道为 1
end
注:ActiveX 视频对象总是直接写屏幕的,它的 direct to stage 总是设置的,这使得它超越 Director 通道的安排次序,总是在最上面的。
问题 5:什么是 Shockwave, 什么是 Flash,为什么 Shockwave 比 Flash 提供更高的帧速率?
解答:
1:shockwave 和 Flash 是 Macromedia 提供的两种网上媒体流播放技术。Flash 是一种网上矢量动画技术并带有一定的交互编程功能。Shockwave 是一种更加复杂的播放技术,由于它提供了强大的,可扩展的脚本引擎,使得它可以制作聊天室,操作 HTML,解析 XML 2文档,控制适量图形,两者都是流媒体技术。但是 Flash 启动非常的快,而 shockwave 启动没有 Flash 快。Flash 使用 Flash 软件制作,文件后缀名是 swf (shockwave flash format),Shockwave 是用 Director 制作,文件后缀名是 dcr。
2:帧速率决定了媒体可以播放的最高速率,shockwave 和 flash 的实际播放速率通常由于播放所需的计算量而达不到指定的播放率,二者的内部渲染引擎不同,shockwave 的帧速率通常在30-60 之间,而 Flash 的帧速率在 7-12 之间。Shockwave 本质上使用一个高性能的点阵复合引擎,而 Flash 实质上是一个实时适量到点阵的渲染引擎。通常矢量到点阵的渲染要比简单的将点阵图像复合更加耗时,这就是为什么 Shockwave 比 Flash 提供更高的帧速率。
一句话:Flash 是一个矢量动画软件 ,而 Director 制作的 shockwave 更多是基于点阵的动画。
其实这是一个很简单的事实,但是非常令人费解的是很多人并不清楚这些。致使很多人在 Flash 中嵌入大量的位图,使得文件很大。也有的人总觉得 Flash 比 shockwave 慢,却不明白原因。
以上是我在使用 Director 制作光盘和网上 shockwave 多媒体游戏的一些心得。我在这里抛砖引玉,希望结识更多和我一样喜欢 Director 的朋友。
#p#副标题#e#